home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Prog / D-G / gestalt-selectors-213.etx < prev    next >
Encoding:
Text File  |  1993-11-14  |  94.8 KB  |  2,280 lines  |  [TEXT/EDIT]

  1.  
  2. Supplemental Gestalt Selectors List 2.1.3
  3. =========================================
  4. First published: 12 October 1992, 13:15 CET (GMT+1)
  5. Last modified  : 14 November 1993, 19:00 CET (GMT+1)
  6.  
  7. Supplemental to the selector codes listed in the Gestalt Chapter of
  8. Inside Macintosh VI (IM VI), that is.
  9. These can include selector codes installed by Apple (system) software or by
  10. software from third parties (your software?).
  11. About IM Operating System Utilities: First it was scheduled for Winter 1992,
  12. then delayed until June and later to October 1993. Now I heard it will
  13. probably be released in May 1994. Retail price in Holland will be around $25.
  14.  
  15. This file can be best viewed with a mono-spaced font like Monaco. Because
  16. it is wrapped as setext you can use several utilities to index and read it.
  17. For the Macintosh you can use Easy View and on a UNIX system sv (setext
  18. viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu,
  19. archived respectively as:
  20.      info-mac/text/easy-view-232.hqx
  21.      info-mac/text/easy-view-233-patch.hqx
  22.      info-mac/text/setext-viewer-02-unix.uu
  23.  
  24. See for more information about this list the chapters at the end.
  25.  
  26. Contents
  27. --------
  28.       Changes
  29.         Contributions
  30.         Changes Overview
  31.       Gestalt Selector Codes
  32.         Apple System Software
  33.         Apple Additional Software
  34.         Third Parties Software
  35.       Unknown Gestalt Selector Codes
  36.         Apple System Software
  37.         Apple Additional Software
  38.         Third Parties Software
  39.       Gestalt Manager Calls
  40.         Gestalt Manager Routines
  41.         Undocumented Gestalt Manager Routines
  42.         Gestalt Value Routines
  43.       Kilo-liners
  44.         Direct Gestalt Calls
  45.         Direct GestaltValue Calls
  46.         GestaltSelectorZero
  47.       Abbreviations
  48.       Sources
  49.       Miscellaneous
  50.         AppleShare File & Print Server selector codes
  51.         Glue code
  52.         Related Software
  53.       About this list
  54.         Availability
  55.         Acknowledgements
  56.       Definitions and Format
  57.         Use in Language
  58.         Definitions
  59.         Format Selector Entry
  60.         Format Version Numbers
  61.       Legal Stuff
  62.         Notice of Liability
  63.         Trademarks
  64.         Distribution
  65.       Editor's Address
  66.  
  67. Changes
  68. =======
  69. All contributions and changes to the list since version 2.1 are listed
  70. in this chapter.
  71.  
  72. Contributions
  73. -------------
  74.  
  75. The following persons contributed to this version:
  76.  
  77. _Person:              Software:               Selector(s) added/changed:    _
  78. Anonymous            System (enablers)       drag, intd, teat
  79. J.D.S. Babcock/Rene Ros
  80.                      System (enablers)       mach
  81. Mark Dawson          System (enablers)       mach
  82. Lawrence D'Oliveiro  AppleScript ext         evnt
  83. Michael Hecht        AppleScript ext         evnt
  84.                      System (enablers)       mach
  85. Roland Mansson       AppleShare Server?      afps
  86.                      System (Q840AV)         aint, os  , vers
  87.                      System (enablers)       mach
  88.                      unknown                 LxRZ
  89. Rene Ros             RapidTrack cp           AP05
  90.                      Responder ext           wma.
  91.                      System (enablers)       mach
  92.  
  93. _Person:              Chapter/Section(s):                                   _
  94.  
  95. Mark Dawson, Michael Hecht and Roland Mansson provided the machine types of
  96. new Macs. Everyone of them had a piece of the puzzle.
  97.  
  98. I had made an typo with the bit number when an additional bit was reported
  99. for the gestaltAppleEventsAttr selector. This error stayed around until
  100. the correct info appeared. And even then I thought it was correct until
  101. Lawrence D'Oliveiro said he'd never seen bit 2 set. A look into the
  102. contributions archive revealed my error. Changed!
  103.  
  104. The gestaltMachineType entry has changed a bit. It now includes unreleased
  105. machines as well, although with most of them the return value is still a
  106. mystery.
  107.  
  108. Changes Overview
  109. ----------------
  110. Added selectors
  111.   Apple System  : 
  112.   Apple Add.    : drag, teat
  113.   Third Parties : 
  114. Added unknown
  115.   Apple System  : 
  116.   Apple Add.    : afps
  117.   Third Parties : AP05
  118. Changed selectors
  119.   Apple System  : evnt, mach, os  , wma.
  120.   Apple Add.    : 
  121.   Third Parties : 
  122. Changed unknown
  123.   Apple System  : aint
  124.   Apple Add.    : 
  125.   Third Parties : LxRZ
  126. Previously unknown
  127.   Apple System  : intd
  128.   Apple Add.    : 
  129.   Third Parties : 
  130. Includes updates 2.1.1 thru 2.1.3, send to subscribers of the distribution
  131. list.
  132.  
  133. Gestalt Selector Codes
  134. ======================
  135. The following sections list selector codes of which the meaning is know.
  136.  
  137. Apple System Software
  138. ---------------------
  139. alis (System [7.0])
  140.      gestaltAliasMgrAttr (addition by Remote AppleTalk Aliases)
  141.  
  142.      gestaltAliasMgrSupportsRemoteAppletalk = 1; 
  143.                                              {supports Remote Appletalk} *9
  144.      See also remarks with 'qtim' selector.
  145. atkv (System [7.0, AppleTalk 56])
  146.      gestaltATalkVersion *4 (not listed)
  147.      Returns AppleTalk version as NumVersion.
  148.  
  149.      This is different from 'atlk' !
  150.      With the release of the System 7 Tuner product, AppleTalk will not be
  151.      loaded at startup, if prior to the previous shutdown AppleTalk was
  152.      turned off in the Chooser. Under this circumstance, the 'atkv'
  153.      selector is not available. If the 'atkv' selector is not available
  154.      under System 7, this is an indicator that AppleTalk cannot be turned
  155.      on without doing so in the Chooser and rebooting the system. *4
  156.  
  157.      gestaltATalkVersion = 'atkv'; *3/5
  158. atlk (System [6.0.4])
  159.      gestaltAppleTalkVersion (addition)
  160.      Returns the version of the .MPP driver as INTEGER.
  161.  
  162.      LAPMgrExists := (AppleTalkVersion >= 53); *4
  163. cash (System [???]) *10
  164.      gestaltRAMCacheSize (not listed)
  165.      Returns byte-size of physical RAM allocated to Disk Cache.
  166.      0 = Disk Cache Off
  167.  
  168.      gestaltRAMCacheSize = 'cash';
  169.  
  170.      NOTE:
  171.      Is listed in THINK Reference 1.0 but it is unknown which System
  172.      Software version should install it.
  173. conn (System [7.0], Communications Toolbox installed)
  174.      gestaltConnMgrAttr (addition)
  175.      With System 6, this Gestalt selector isn't implemented when the
  176.      Communications Toolbox is installed (Michael Hecht).
  177.  
  178.      gestaltConnMgrErrorString  = 2; {has CMGetErrorString} *11
  179.      gestaltConnMgrMultiAsyncIO = 3; {CMNewsIOPB,CMDisposeIOPB,} *11
  180.                                      {CMPBRead,CMPBWrite,CMPBIOKill}
  181. cpnt (System [7.1])
  182.      (Color Picker Extension ext [2.0]))
  183.      (QuickTime ext [1.0])
  184.      (Sound Manager ext [3.0]?)
  185.      (Speech Manager ext [1.1.1])
  186.      gestaltComponentMgr (not listed)
  187.      Returns Component Manager version as INTEGER.
  188.  
  189.      gestaltComponentMgr = 'cpnt'; *6
  190. cput (System? [???]) *20
  191.      gestaltNativeCPUtype (not listed)
  192.  
  193.      gestaltCPU68000 = 1;
  194.      gestaltCPU68010 = 2;
  195.      gestaltCPU68020 = 3;
  196.      gestaltCPU68030 = 4;
  197.      gestaltCPU68040 = 5;
  198.      gestaltCPU601   = 1;
  199.  
  200.      NOTE:
  201.      This selector should probably be used together with the
  202.      gestaltSysArchitecture ('sysa') selector. When the gestalt68k bit is
  203.      set the MC 680x0 CPUs are returned, and if the gestaltPowerPC bit is
  204.      set the PowerPC CPUs are returned. Meanwhile the gestaltProcessorType
  205.      ('proc') probably returns the CPU which is emulated when on a PowerPC.
  206.      Nothing of this is confirmed anywhere but it sounds logical.
  207.  
  208.      This selector is installed on a Centris 660AV.
  209.      (Rene Ros)
  210. crm  (System [7.0], Communications Toolbox Installed)
  211.      gestaltCRMAttr (additions)
  212.  
  213.      gestaltCRMPersistentFix = 1; {fix for persistent tools} *11
  214.      gestaltCRMToolRsrcCalls = 2; {has CRMGetToolResource/} *11
  215.                                   {ReleaseToolResource}
  216. ctbm (System [7.0], Communications Toolbox installed)
  217.      gestaltCTBManagersAttr (not listed)
  218.      Returns information about the Communications Toolbox Managers, it is a
  219.      bitmask of which managers are present.
  220.  
  221.      gestaltCTBManagersAttr = 'ctbm'; *7
  222. ctbu (System [7.0], Communications Toolbox installed)
  223.      gestaltCTBUtilsAttr (not listed)
  224.      Returns information about the Communications Toolbox Utilities.
  225.  
  226.      gestaltCTBUtilsAttr    = 'ctbu'; *7
  227.      gestaltCTBUtilsPresent = 0;      *7
  228. ctbv (System [7.0], Communications Toolbox Installed)
  229.      gestaltCTBVersion (addition)
  230.  
  231.      This selector is also installed by the Communications Toolbox for
  232.      System 6 (version 6.0.4 and higher).
  233.      See for details IM VI.
  234. dict (System [7.1])
  235.      gestaltDictionaryMgrAttr (not listed)
  236.      Returns information about the Dictionary Manager.
  237.  
  238.      gestaltDictionaryMgrAttr    = 'dict';
  239.      gestaltDictionaryMgrPresent = 0;
  240. easy (Easy Access cp [7.0?]) *20
  241.      gestaltEasyAccessAttr (replacement?)
  242.  
  243.      gestaltEasyAccessAttr = 'easy';
  244.      gestaltEasyAccessOff  = 0;      {Easy Access present but off}
  245.      gestaltEasyAccessOn   = 1;      {Easy Access on}
  246. eajt (Easy Access cp [7.0])
  247.      gestaltEasyAccessJTable (not listed)
  248.      Returns the base address of the Easy Access jump-trap table.
  249.  
  250.      gestaltEasyAccessJTable = 'eajt'; *3
  251. edtn (System [7.0])
  252.      gestaltEditionMgrAttr (addition by Easy Open)
  253.  
  254.      gestaltEditionMgrTranslationAware = 1; *12
  255. evnt (System [7.0])
  256.      (Apple Event Mgr [1.0.1] installed by AppleScript ext [1.0])
  257.      gestaltAppleEventsAttr (addition)
  258.  
  259.      gestaltAppleEvents101Present = 1; {Apple Event Mgr 1.0.1 present}
  260. flag (Network Extension ext [System 7.0 *4])
  261.      gestaltFlagshipAttr (not listed)
  262.      Returns information about the Flagship.
  263.  
  264.      gestaltFlagshipAttr       = 'flag'; *3
  265.      gestaltFlagshipPresent    = 0;      *3
  266.      gestaltFlagshipRegistered = 1;      *3
  267. fndr (Finder [7.1.1b1?]) *20
  268.      gestaltFinderAttr (not listed)
  269.  
  270.      gestaltFinderAttr               = 'fndr';
  271.      gestaltFinderDropEvent          = 0;
  272.      gestaltFinderMagicPlacement     = 1;
  273.      gestaltFinderCallsAEProcess     = 2;
  274.      gestaltOSLCompliantFinder       = 3;
  275.      gestaltFinderSupports4GBVolumes = 4;
  276.      gestaltFinderHandlesCFMFailures = 5;
  277. font (System [7.0])
  278.      (TrueType INIT ext for System 6)
  279.      gestaltFontMgrAttr (addition)
  280.  
  281.      gestalt???              = 1; {set with System 7.1}
  282.      gestaltDiskCachedFonts? = 2; {Disk Cached Fonts available?}
  283.  
  284.      NOTE:
  285.      Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
  286.      with full subroutine names, there is a subroutine called
  287.      'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
  288.      of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
  289. fpu  (System [6.0.4])
  290.      gestaltFPUType (addition)
  291.  
  292.      gestalt68040FPU = 3; *2
  293. fs   (System [7.0])
  294.      gestaltFSAttr (addition)
  295.  
  296.      gestaltHasFileSystemManager = 2; *2
  297.  
  298.      NOTE:
  299.      File System Manager (version 1.0a3 according to the INIT resource
  300.      name) is installed by the 720K Floppy Disk Formatter, part of the
  301.      Hardware System Update 2.0 and later.
  302. fxfr (System [7.0])
  303.      gestaltFXfrMgrAttr (additions)
  304.  
  305.      gestaltFXfrMgrMultiFile   = 1; {supports FTSend and FTReceive} *11
  306.      gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString} *7/11
  307. gval (GestaltValue Glue code)
  308.      gestaltValueAddr?
  309.      The first time you call NewGestaltValue, the library installs two non-
  310.      relocatable blocks in the system heap and the gestalt selector. One of
  311.      the blocks is filled with code: it's actually a gestalt function that
  312.      implements GestaltValue's shared mechanism. The second block contains
  313.      the selectors and values GestaltValue manages. The response returned
  314.      by the 'gval' selector is a pointer to the second non-relocatable
  315.      block in the system heap. (Marco Piovanelli)
  316. hdwr (System [6.0.4])
  317.      gestaltHardwareAttr (additions)
  318.  
  319.      gestaltHasRBV          =  2; {RBV}                            *3
  320.      gestaltHasOSS          =  5; {OSS}                            *3
  321.      gestaltHasSCSIDMA      =  6; {53C80 SCSI DMA}                 *3
  322.      gestaltHasSWIMIOP      =  8; {SWIM IOP}                       *3
  323.      gestaltHasSCCIOP       =  9; {SCC IOP}                        *3
  324.      gestaltHasFitch        = 10; {Fitch memory Controller}        *8
  325.      gestaltHasIWM          = 11; {IWM}                            *3
  326.      gestaltHasPWM          = 12; {PWM disk speed buffer}          *8
  327.      gestaltHasRAMSndBuff   = 13; {RAM-based sound buffer}         *8
  328.      gestaltHasVideoDAConv  = 14; {Video D/A Converter}            *8
  329.      gestaltHasPGC          = 15; {PGC (parity control)}           *8
  330.      gestalt???             = 16; {unknown, found in Speech Mgr ext}
  331.      gestalt???             = 17; {unknown, found in Speech Mgr ext}
  332.      gestalt???             = 18; {unknown, found in Speech Mgr ext}
  333.      gestaltHasSoftPowerOff = 19; {Software PowerOff (since 7.0?)} *2
  334.      gestaltHasSonic        = 20; {Sonic}                          *3
  335.      gestaltHasSCSI961      = 21; {Int. 53C96 SCSI}                *1
  336.      gestaltHasSCSI962      = 22; {Ext. 53C96 SCSI}                *1
  337.      gestaltHasDAFBVideo    = 23; {DAFB Video}                     *3
  338.      gestaltHasUniversalROM = 24; {Universal ROM}                 *17
  339.      gestaltHas???          = 27; {set on PowerPC prototype and C660AV,
  340.                                    DSP?, AWAC?}
  341.      gestaltHas???          = 30; {set on C660AV, DSP?}
  342.      See for more information the TN "M.OV.GestaltSysenvirons" (OV 16).
  343. help (System [7.0])
  344.      gestaltHelpMgrAttr (addition)
  345.  
  346.      gestaltHelpMgrExtensions = 1; {help mgr extensions are installed} *19
  347. icon (System? [???])
  348.      gestaltIconUtilities (not listed)
  349.  
  350.      gestaltIconUtilities        = 'icon';
  351.      gestaltIconUtilitiesPresent = 0;
  352. intd (System [7.1])
  353.      (System Enabler 111 [1.0])
  354.      (System Enabler 121 [1.0])
  355.      (System Enabler 201 [1.0])
  356.      gestaltInternalDiskAttr?
  357.      Returns information about the internal harddisk of PowerBook
  358.      computers.
  359.  
  360.      gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
  361.      gestaltHasInternalDisk?  = 0;      {TRUE if machine has internal HD}
  362.      gestaltDiskSpinning?     = 1;      {TRUE if internal HD is spon up}
  363. kbd  (System [6.0.4])
  364.      gestaltKeyboardType (additions)
  365.  
  366.      gestaltPwrBookADBKbd     = 12; {PowerBook ADB Keyboard}       *1
  367.      gestaltPwrBookISOADBKbd  = 13; {PowerBook ISO ADB Keyboard}   *1
  368.      gestaltAppleAdjustKeypad = 14, {Adjustable Keypad?}           *20
  369.      gestaltAppleAdjustADBKbd = 15, {Adjustable ADB Keyboard?}     *20
  370.      gestaltAppleAdjustISOKbd = 16, {Adjustable ISO ADB Keyboard?} *20
  371.  
  372.      Combinations of System Global KbdType and gestaltKeyboardType values
  373.      ======================================================================
  374.      KbdType    gestaltKeyboardType          KbdType    gestaltKeyboardType
  375.      (hex.)     (decimal)                    (hex.)     (decimal)
  376.      ----------------------------------------------------------------------
  377.        $03          1                          $0F         18
  378.        $13          2                          $12         19
  379.        $0B          3                          $13         20
  380.        $02          4                          $14         21
  381.        $01          5                          $15         22
  382.        $06          6                          $16         23
  383.        $07          7                          $17         24
  384.        $04          8                          $18         25
  385.        $05          9                          $19         26
  386.        $08         10                          $1A         27
  387.        $09         11                          $1B         28
  388.        $0C         12                          $1C         29
  389.        $0D         13                          $1D         30
  390.        $0E         14                          $1E         31
  391.        $10         15                          $1F         32
  392.        $11         16                          $20         33
  393.        $0A         17
  394.      ======================================================================
  395.      (Source: from the PTCH 5 resource in the Hardware System Update 2.0
  396.               extension.)
  397.  
  398.      NOTE:
  399.      The Apple Adjustable Keyboard doesn't have its own gestalt keyboard
  400.      type defined with the currently available System Software. It changes
  401.      a low memory global but this doesn't change the Gestalt response.
  402.      Because of this programs which follow Apple's rules to determine the
  403.      keyboard type by using the Gestalt Mgr may not function properly.
  404.      This problem is corrected by the Hardware System Update 2.0 and later.
  405. mach (System [6.0.4]) INF
  406.      gestaltMachineType (additions)
  407.  
  408.      RELEASED
  409.      gestaltQuadra900          = 20; {Macintosh Quadra 900}     *1
  410.      gestaltPowerBook170       = 21; {Macintosh PowerBook 170}  *1
  411.      gestaltQuadra700          = 22; {Macintosh Quadra 700}     *1
  412.      gestaltClassicII          = 23; {Macintosh Classic II}     *1
  413.      gestaltPowerBook100       = 24; {Macintosh PowerBook 100}  *1
  414.      gestaltPowerBook140       = 25; {Macintosh PowerBook 140}  *1
  415.      gestaltQuadra950          = 26; {Macintosh Quadra 950}     *1
  416.      gestaltMacLCIII           = 27; {Macintosh LC III}
  417.      gestaltPowerBook210       = 29; {Macintosh PowerBook 210}
  418.      gestaltMacCentris650      = 30; {Macintosh Centris 650}
  419.      gestaltPowerBook230       = 32; {Macintosh PowerBook 230}
  420.      gestaltPowerBook180       = 33; {Macintosh PowerBook 180}
  421.      gestaltPowerBook160       = 34; {Macintosh PowerBook 160}
  422.      gestaltMacQuadra800       = 35; {Macintosh Quadra 800}
  423.      gestaltMacQuadra650?      = 36; {Macintosh Quadra 650}
  424.      gestaltMacLCII            = 37; {Macintosh LC II}
  425.      gestaltMacPowerBookDuo250 = 38; {Macintosh PowerBook Duo 250}
  426.      gestaltMacIIvi            = 44; {Macintosh IIvi}
  427.      gestaltPerforma600        = 45; {Macintosh Performa 600}
  428.      gestaltMacIIvx            = 48; {Macintosh IIvx}
  429.      gestaltMacColorClassic    = 49; {Macintosh Color Classic}
  430.      gestaltPowerBook165c      = 50; {Macintosh PowerBook 165c}
  431.      gestaltMacCentris610      = 52; {Macintosh Centris 610}
  432.      gestaltMacQuadra610?      = 53; {Macintosh Quadra 610}
  433.      gestaltPowerBook145       = 54; {Macintosh PowerBook 145 & 145b}
  434.                                      {145B has few differences with 145}
  435.      gestaltMacLC520           = 56; {Macintosh LC 520}
  436.      gestaltMacCentris660AV    = 60; {Macintosh Centris 660AV}
  437.      gestaltPerforma460        = 62; {Macintosh Performa 460}
  438.      gestaltPowerBook180c      = 71; {Macintosh PowerBook 180c}
  439.      gestaltMacQuadra840AV     = 78; {Macintosh Quadra 840AV}
  440.      gestaltPerforma550        = 80; {Macintosh Performa 550}
  441.      gestaltPowerBook165?      = 84; {Macintosh PowerBook 165}
  442.      gestaltMacintoshTV        = 88; {Macintosh TV}
  443.      gestaltMacLC475           = 89; {Macintosh LC 475}
  444.      gestaltMacQuadra605?      = 94; {Macintosh Quadra 605}
  445.  
  446.      Exceptions with systems prior to System 7.1:
  447.      gestaltMacLCII            = 19; {Macintosh LC & LC II}
  448.                                      {LC has MC68020, LC II has MC68030}
  449.      gestaltPowerBook145       = 25; {Macintosh PowerBook 140 & 145}
  450.                                      {processor speed is only difference}
  451.                                      {use GetCPUSpeed from Power Mgr?}
  452.  
  453.      Released unknown
  454.      All other released macs and not listed here! I can't keep up with
  455.      the new releases... Can you?
  456.  
  457.      Equivalents
  458.      Color Classic II          = gestaltMacColorClassic? (sold in Japan?)
  459.      Performa 200              = gestaltClassicII
  460.      Performa 400              = gestaltMacLCII
  461.      Performa 405              = gestaltMacLCII
  462.      Performa 410              = gestaltMacLCII
  463.      Performa 430              = gestaltMacLCII
  464.      Performa 450              = gestaltMacLCIII
  465.      Performa 460              = gestaltMacLCIII
  466.      Performa 466              = gestaltMacLCIII
  467.      Performa 467              = gestaltMacLCIII
  468.      Performa 475              = gestaltMacLC475
  469.      Performa 476              = gestaltMacLC475
  470.      Performa 600              = gestaltMacIIvx
  471.      Performa 600CD            = gestaltMacIIvx
  472.      Quadra 660AV              = gestaltMacCentris660AV
  473.      Workgroup Server 60       = gestaltMacCentris610
  474.      Workgroup Server 80       = gestaltMacQuadra800
  475.      Workgroup Server 95       = gestaltQuadra950
  476.  
  477.  
  478.      UNRELEASED
  479.      gestalt???                = ??; {unknown, codename Pomona?}
  480.      gestalt???                = ??; {unknown, codename BlackBird?}
  481.      gestalt???                = ??; {unknown, two PowerBook Duo}
  482.      gestalt???                = ??; {unknown, PowerPC 603 PB Duo}
  483.      gestalt???                = 43; {unknown, pre-release Tempest/Cyclone}
  484.      gestalt???                = 75; {PowerPC prototype}
  485.      gestaltMacLC476?          = ??; {Macintosh LC 476}
  486.      gestaltPowerBook270C?     = ??; {Macintosh PowerBook 270c}
  487.      gestaltQuadra6100?        = ??; {Macintosh Quadra 6100}
  488.      gestaltQuadra6500?        = ??; {Macintosh Quadra 6500}
  489.      gestaltQuadra8500?        = ??; {Macintosh Quadra 8500}
  490.      gestaltPPC601?            = ??; {PowerPC? 601? value 75?}
  491.      gestaltPPC604?            = ??; {PowerPC? 604?}
  492.  
  493.      Equivalents
  494.      Performa 550              = gestaltMacLC520?
  495.      PPC Workgroup Server 60   = gestaltQuadra6100?
  496.      PPC Workgroup Server 80   = gestaltQuadra6500?
  497.      PPC Workgroup Server 95   = gestaltQuadra8500?
  498.  
  499.      NOTES:
  500.      The Performa 600 was originally planned to ship as Macintosh IIvm
  501.      but the name was changed because users thought 'vm' meant 'Virtual
  502.      Memory'. Some system enablers (001, 040, 065 & 201) still contain
  503.      that original name.
  504.  
  505.      The Developer Notes (available on ftp.apple.com and on the Developer
  506.      CD-ROM Series, amongst others) about Macintosh models provide in
  507.      several cases wrong or incomplete information regarding the machine
  508.      type returned by the Gestalt Manager.
  509.  
  510.      On Macintosh Performas, the Machine Name STR# resource will always
  511.      return the string "Macintosh" (not "Macintosh Performa 450" or
  512.      "Performa 450").  On all other Macintoshes, the string will return
  513.      the correct name. (Mark Dawson)
  514.  
  515.      All system enablers have a STR# resource -16395 (kMachineNameStrID)
  516.      included to replace the one in the System file. In most cases this
  517.      resource lists the same Macintosh names as the original one in
  518.      System 7.1 and adds the names of the machines the enabler is used for.
  519.      Therefore, if you want to display all Macintosh names you can't
  520.      rely on this resource anymore. (Rene Ros)
  521.      
  522.      (Main source equivalents and unreleased machines:
  523.       MacFacts Two by J.D.S. Babcock, used with permission)
  524. micn (System [6.0.4]) INF
  525.      gestaltMachineIcon (addition)
  526.  
  527.      NOTE:
  528.      The icon resource ID returned is based on the gestaltMachineType
  529.      response which is used as an index into a table. This table of
  530.      resource IDs differs with most System Software versions (and
  531.      enablers). If you really want to know the icon resource ID of a
  532.      machine which is not the current machine you have the following
  533.      options:
  534.      - Write a GDEF to replace the 'mach' selector, let this GDEF return
  535.        the original gestaltMachineType unless a certain selector exists.
  536.        Create this selector with the GestaltValue code and make it loop
  537.        from 1 to the number of items in the STR# kMachineNameStrID
  538.        resource, let the custom GDEF return this as the machine type so
  539.        the gestaltMachineIcon selector will use this to look up the icon
  540.        resource ID. Then remove the GestaltValue selector and restore the
  541.        original gestaltMachineType selector.
  542.      - Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
  543.        GDEF a few bytes further (and thus skipping the gestalt call using
  544.        the gestaltMachineType selector), emulate a genuine call to Gestalt
  545.        by setting the A0 (response, the machineType you want) and
  546.        D0 (result) registers correct.
  547.      - Determine the start of the table, which is located in memory before
  548.        the entrypoint of the gestaltMachineIcon GDEF code, and calculate
  549.        the offset to the icon resource ID you need. If you want code which
  550.        does this, you can contact me (Rene Ros) an I will sent you some
  551.        Pascal source code.
  552.      (David Greenspon, Michael Hecht and Rene Ros)
  553. misc (System [6.0.5])
  554.      gestaltMiscAttr (addition)
  555.  
  556.      gestaltBootGlobals = 1; {Boot Globals} *8
  557. mmu  (System [6.0.4])
  558.      gestaltMMUType (addition)
  559.  
  560.      gestalt68040MMU = 4; {68040/68LC040 built-in} *2
  561.      gestalt???      = 5; {PowerPC prototype MMU}
  562. nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
  563.      gestaltNuBusSlotCount (not listed)
  564.      Returns count of NuBus slots.
  565.  
  566.      gestaltNuBusSlotCount = 'nubs';
  567. os   (System [6.0.4, 7.0 and higher])
  568.      gestaltOSAttr (addition)
  569.  
  570.      gestalt???                  = 9; {set on PowerPC prototype and Q840AV}
  571.      gestaltBgndMouseDownSupport = 10; *20
  572. osyv (sysvINIT by T. Tanaka, Apple Computer Japan Inc.) INF
  573.      Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
  574.      available on Developer CD-ROM Series) replaces the standard 'sysv'
  575.      Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
  576.      installs the 'osyv' selector which uses the replaced GDEF. *13
  577. pcxg (System? [???]) *20
  578.      gestaltPCXAttr (not listed)
  579.  
  580.      gestaltPCXAttr            = 'pcxg';
  581.      gestaltPCXHas8and16BitFAT = 0;
  582.      gestaltPCXHasProDOS       = 1;
  583. ppc  (System [7.0])
  584.      gestaltPPCToolboxAttr (addition)
  585.      The first thing that is confusing is that, unlike other selectors
  586.      returning attributes, the responses are not bit values, but bit masks.
  587.      This means you simply AND the value with the response to test the bit.
  588.      The second thing that is confusing is how to interpret
  589.           gestaltPPCToolboxPresent = $0x0000.
  590.      What this means is that if the PPC toolbox is present, but has not
  591.      been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
  592.      returns $0x0000. In reality, PPCInit gets called by the Process
  593.      Manager before any applications get launched, so no applications will
  594.      actually see this response. (Dave Radcliff)
  595.  
  596.      gestaltPPCToolboxAttr      = 'ppc ';
  597.      gestaltPPCToolboxPresent   = $0x0000; {Requires PPCInit to be called}
  598.      gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net requests}
  599.      gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net requests}
  600.      gestaltPPCSupportsRealTime = $0x1000; {Supports real-time delivery}
  601. proc (System [6.0.4])
  602.      gestaltProcessorType (addition)
  603.  
  604.      gestalt68040   = 5; *2
  605.  
  606.      NOTE:
  607.      The 68LC040 responds as type gestalt68040 but doesn't has a FPU. The
  608.      user can swap out the 68LC040 and put in a real 68040 with FPU, so
  609.      just checking the machineType or the processorType isn't enough.
  610.      (Dave Radcliff)
  611. qd   (System [6.0.4])
  612.      gestaltQuickDrawVersion (addition)
  613.  
  614.      Possible Combinations of ROM Versions and System Software Versions
  615.      ======================================================================
  616.      ROM Class             System Version         Gestalt Value
  617.      ----------------------------------------------------------------------
  618.      Black-and-white class <  7.0                 gestaltOriginalQD
  619.      (ROM < 256K)          >= 7.0                 gestaltOriginalQD and
  620.                                               gestaltSystemVersion >= $0700
  621.  
  622.      Color QD class        <  7.0, no INITs       gestalt8BitQD
  623.      (ROM = 256K)          6.0.3/6.0.4 and        gestalt32BitQD
  624.                            32-Bit QD INIT 1.0
  625.                            6.0.5-6.0.8 and        gestalt32BitQD12
  626.                            32-Bit QD INIT 1.2
  627.                            >= 7.0                 gestalt32BitQD13
  628.  
  629.      ci class              6.0.4                  gestalt32BitQD + 1
  630.      (ROM > 256K)          6.0.5-6.0.8            gestalt32BitQD12
  631.                            >= 7.0                 gestalt32BitQD13
  632.      ======================================================================
  633.      (Source: Develop Issue 14, June 1993)
  634.  
  635.      NOTE:
  636.      gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
  637.      $0x0201 as respone value and doesn't have a constant defined.
  638. qdrw (System [7.0])
  639.      gestaltQuickDrawFeaturesAttr (not listed)
  640.  
  641.      gestaltQuickDrawFeaturesAttr = 'qdrw'; *2
  642.      gestaltHasColor              = 0;      *2
  643.      gestaltHasDeepGWorlds        = 1;      *2
  644.      gestaltHasDirectPixMaps      = 2;      *2
  645.      gestaltHasGrayishTextOr      = 3;      *2
  646.  
  647.      NOTE:
  648.      There is a bug in the 'qdrw' selector that causes it to report that
  649.      Color QuickDraw is always present, even on machines that don't support
  650.      it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
  651.      Use SysEnvirons instead or try this:
  652.        long qdVersion = 0;
  653.        gHasColorQuickDraw = (Gestalt(gestaltQuickdrawVersion,&qdVersion)
  654.                              == noErr) && (qdVersion >= gestalt8BitQD);
  655. rbv  (System [6.0.4, discontinued?]) *20
  656.      gestaltRBVAddr (not listed)
  657.  
  658.      gestaltRBVAddr = 'rbv ';
  659. rtmr (System? [???])
  660.      gestaltRealtimeMgrAttr (not listed)
  661.      Returns information about the Realtime Manager.
  662.  
  663.      gestaltRealtimeMgrAttr    = 'rtmr';
  664.      gestaltRealtimeMgrPresent = 0;
  665. rsrc (System [should work since 7.0?])
  666.      gestaltResourceMgrAttr (addition)
  667.  
  668.      gestalt??? = 1; {unknown}
  669.  
  670.      NOTE:
  671.      Under System 7, bit 0 that tells if you have partial resource support
  672.      doesn't work right. The selector is undefined under System 7.0 and
  673.      7.0.1 even though the partial resource calls are available. This has
  674.      been acknowledged by Apple.
  675.      (Michael Hecht, Quinn)
  676. sccr (System [6.0.4, discontinued]) *20
  677.      gestaltSCCReadAddr (not listed)
  678.      Returns the address of SCC read ports.
  679.  
  680.      gestaltSCCReadAddr = 'sccr';
  681. sccw (System [6.0.4, discontinued]) *20
  682.      gestaltSCCWriteAddr (not listed)
  683.      Returns the address of SCC write ports.
  684.  
  685.      gestaltSCCWriteAddr = 'sccw';
  686. scri (System [6.0.4])
  687.      gestaltScriptMgrVersion (addition)
  688.  
  689.      Version numbers for the Script Manager
  690.      ======================================================================
  691.      System Version       Script Mgr           Script Mgr          Version
  692.                           (older ROMs)+        (newer ROMs)        format
  693.      ----------------------------------------------------------------------
  694.      6.0.3 and earlier    <= $20F              N.A.                binary
  695.      6.0.4 Roman          $211                 $215                  "
  696.      6.0.4 non-Roman      $212                 $216                  "
  697.      6.0.5                $213                 $217 (=2.23)          "
  698.  
  699.      6.0.7                $230                 $231                BCD
  700.      J-6.0.7.1            $230                 $231                 "
  701.      6.0.8                $230                 $231                 "
  702.      6.1 non-Roman        $240                 $241                 "
  703.      7.0                  $700                 $700                 "
  704.      7.0.1 Roman          $701                 $701                 "
  705.      7.0.1 non-Roman      $701                 $701                 "
  706.      7.1                  $710                 $710                 "
  707.      
  708.      + Plus,SE,II,IIx,IIcx,SE/30,Classic
  709.      ======================================================================
  710.      (Source: Inside Macintosh Text)
  711.  
  712. slot (System [6.0.4, 6.0.5, discontinued])
  713.      gestaltSlotAttr (not listed)
  714.      Returns information about the Slot Manager.
  715.  
  716.      gestaltSlotAttr            = 'slot';
  717.      gestaltSlotMgrExists       = 0;
  718.      gestaltNuBusPresent        = 1;
  719.      gestaltSESlotPresent       = 2;
  720.      gestaltSE30SlotPresent     = 3;
  721.      gestaltPortableSlotPresent = 4;
  722. slt1 (System [6.0.4, 6.0.5, discontinued])
  723.      gestaltFirstSlotNumber (not listed)
  724.      Returns first slot number.
  725.  
  726.      gestaltFirstSlotNumber = 'slt1';
  727. sltc (System [6.0.8?])
  728.      gestaltNuBusConnectors (addition)
  729.  
  730.      NOTE:
  731.      This selector does not return information about the Macintosh IIsi
  732.      slot.
  733. snd  (System [6.0.4])
  734.      gestaltSoundAttr (additions)
  735.  
  736.      gestaltSoundReserved       =  2;
  737.      gestaltPlayAndRecord       =  6; {built-in hardware can play and}
  738.                                       {record simultaneously} *19/20
  739.      gestalt16BitSoundIO        =  7; *20
  740.      gestaltStereoInput         =  8; *20
  741.      gestaltLineLevelInput      =  9; *20
  742.      gestaltSndPlayDoubleBuffer = 10; *20
  743.      gestaltMultiChannels       = 11; {multiple channel support} *19/20
  744.      gestalt16BitAudioSupport   = 12; *20
  745. stdf (System [7.0])
  746.      gestaltStandardFileAttr (additions by Easy Open)
  747.  
  748.      gestaltStandardFileTranslationAware = 1; *12/20
  749.      gestaltStandardFileColorIcons       = 2; *12/20
  750. sysa (System [7.1 on PowerPC prototype?]) *20
  751.      gestaltSysArchitecture (not listed)
  752.  
  753.      gestaltSysArchitecture = 'sysa';
  754.      gestalt68k             = 1;
  755.      gestaltPowerPC         = 2;
  756. sysv (System [6.0.4]) INF
  757.      gestaltSystemVersion (listed in IM VI; question)
  758.      Returns the version number of currently active System file in BCD.
  759.      Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
  760.      actually 6.0.8 in another way?
  761.      The hard way to change the result value is to change the PTCH resource
  762.      with ID# 0 in the System file. Change the word $07 at offset $0x00ED
  763.      to $08.
  764.  
  765.      System    Resource   Offset  Data
  766.      Version   Type  ID#
  767.      6.0.4     PTCH  0    0x005E   0604
  768.      6.0.8     PTCH  0    0x00EC   0607
  769.      7.0       PTCH  0    0x056E   0700
  770.      7.0.1     PTCH  0    0x0578   0701
  771.      7.1       PTCH  0    0x057C   0710
  772.  
  773.      NOTES:
  774.      In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
  775.      versions return $0606. See the 'osyv' selector.
  776.      System J-6.0.7.1 returns $0609
  777.  
  778.      There are some system versions (like International System 6.0.8.1 or
  779.      7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
  780.      7.0.1.
  781. tabl (System [6.0.4])
  782.      gestaltSelectorTable (not listed)
  783.      Returns a handle to the Gestalt selector table itself.
  784.  
  785.      gestaltSelectorTable = 'tabl';
  786.  
  787.      NOTE:
  788.      The Gestalt selector table is kept in a resizable block in the system
  789.      heap. The last item in the table is a dummy entry (INVALID), marked by
  790.      a selector OSType(MaxLongInt). (Marco Piovanelli, he has also some
  791.      snippet Pascal code to list all selectors)
  792. term (System [7.1])
  793.      gestaltTermMgrAttr (addition)
  794.  
  795.      gestaltTermMgrErrorString = 2; *20
  796. tsmv (System [7.1])
  797.      gestaltTSMgrVersion (not listed, not even in IM Text) *18
  798.      Returns Text Services Manager version in BCD.
  799.  
  800.      gestaltTSMgrVersion= 'tsmv';
  801. vers (System [6.0.4])
  802.      gestaltVersion (addition)
  803.  
  804.      The PowerPC prototype, C660AV and Q840AV use Gestalt Manager version 4.
  805. via1 (System [6.0.4, discontinued])
  806.      gestaltVIA1Addr (not listed)
  807.      Returns the address of VIA 1.
  808.  
  809.      gestaltVIA1Addr = 'via1';
  810. via2 (System [6.0.4, discontinued])
  811.      gestaltVIA2Addr (not listed)
  812.      Returns the address of VIA 2.
  813.  
  814.      gestaltVIA2Addr = 'via2';
  815. vm   (System [6.0.4])
  816.      gestaltVMAttr (replacement)
  817.  
  818.      gestaltVMPresent      = 0; {set; virtual memory present}
  819.      gestaltVMNotInstalled = 0; {clear; virtual memory not present}
  820. wma. (System [7.0])
  821.      (Responder ext [2.0?])
  822.      gestaltResponderAttr (not listed)
  823.      Returns information about the Workstation Management Agent aka
  824.      Responder.
  825.  
  826.      gestaltResponderAttr    = 'wma.';
  827.      gestaltResponderPresent = 0;
  828. xttt (System [6.0.8])
  829.      gestaltExtToolboxTable (not listed)
  830.      Returns the base address of the Extended Toolbox trap table.
  831.  
  832.      gestaltExtToolboxTable = 'xttt';
  833.  
  834. Apple Additional Software
  835. -------------------------
  836. arb  (Serial Port Arbitrator ext [1.0], part of AppleTalk Remote Access)
  837.      gestaltArbitorAttr (not listed) *9
  838.      Returns information about the Serial Port Arbitration.
  839.  
  840.      gestaltArbitorAttr             = 'arb ';
  841.      gestaltSerialArbitrationExists = 0;{Serial Port Arbitration installed}
  842. aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *16
  843.      gestaltAudioCDAccessVersion? (not listed)
  844.      Returns Audio CD Access version in BCD.
  845.  
  846.      gestaltAudioCDAccessVersion? = 'aucd';
  847.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  848. cltn (QuickDraw GX [1.0])
  849.      gestaltCollectionMgrVersion (not listed)
  850.      Returns the version of the Collection Manager as NumVersion.
  851.  
  852.      gestaltCollectionMgrVersion = 'cltn';
  853.  
  854.      NOTE:
  855.      The Collection Manager is a set of routines for maintaining tagged
  856.      collections of data; GX uses it to support the "tags" that you can
  857.      attach to GX objects, for holding special data, including
  858.      user-defined data. (Lawrence D'Oliveiro)
  859. cmtc (ColorSync ext [?])
  860.      gestaltColorMatchingVersion (not listed)
  861.      According to the documentation, the value returned by this selector is
  862.      $0x0100 if ColorSync is installed under System 6.0.7, or $0x0110 if
  863.      ColorSync is installed under System 7. (Lawrence D'Oliveiro)
  864.  
  865.      gestaltColorMatchingVersion = 'cmtc';
  866. cpkr (Color Picker ext [2.0?], part of ColorSync Software)
  867.      gestaltColorPickerMgrAttr (not listed)
  868.      Returns information about the Color Picker Manager.
  869.  
  870.      gestaltColorPickerMgrPresent? = 0?; (ColorPicker Mgr Present}
  871.      (Marco Piovanelli, Lawrence D'Oliveiro)
  872.  
  873.      NOTE:
  874.      Extension version 2.0a4 returns a response ($0x0001) which is
  875.      according to the info above. Version 2.0a5 however returns $0x0100, is
  876.      this an error?
  877. drag (Macintosh Drag and Drop ext [1.0])
  878.      gestaltDragMgrAttr *22
  879.      Returns information about the Drag Manager.
  880.  
  881.      gestaltDragMgrAttr    = 'drag'; {Drag Manager attributes}
  882.      gestaltDragMgrPresent = 0;      {Drag Manager is present}
  883. gfxa (QuickDraw GX [1.0])
  884.      gestaltGraphicsAttr (not listed)
  885.      Returns information about the Graphics.
  886.  
  887.      gestaltGraphicsAttr        = 'gfxa'; { graphics attributes bits }
  888.      gestaltGraphicsIsDebugging = 0;
  889.      gestaltGraphicsIsLoaded    = 1;
  890.  
  891.      NOTE:
  892.      The non-debugging version always seems to return 0 from this selector,
  893.      even when a program using GX is currently running.
  894. grfx (QuickDraw GX ext [1.0])
  895.      gestaltGraphicsVersion (not listed)
  896.      Returns the version of the Graphics as INTEGER.
  897.  
  898.      gestaltGraphicsVersion        = 'grfx'; {Gestalt version selector}
  899.      gestaltCurrentGraphicsVersion = 12;     {supposed value returned}
  900.  
  901.      NOTE:
  902.      In fact the 1.0b1 GX returns a value of 13 for this selector.
  903. hscd (High Sierra File Access ext [4.0], part of Apple CD-ROM Software) *16
  904.      gestaltHighSierraFAVersion? (not listed)
  905.      Returns High Sierra File Access version in BCD.
  906.  
  907.      gestaltHighSierraFAVersion? = 'hscd';
  908.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  909. icmp (QuickTime ext [1.0])
  910.      gestaltCompressionMgr (not listed)
  911.      Returns Compression Manager version as Integer
  912.  
  913.      gestaltCompressionMgr = 'icmp'; {determines if Image Compression} *6
  914.                                      {manager is available}
  915. kids (At Ease [1.0])
  916.      ??? (not listed)
  917.      Returns a handle to a structure holding information about At Ease.
  918.  
  919.      The official constant is not defined but the following code was
  920.      published by Apple *21:
  921.  
  922.      #define kAtEaseGestalt    'kids'
  923.      typedef struct {
  924.        short  giVersion;         /* structure version */
  925.        short  giIsActive;        /* true if at ease is currently running */
  926.        short  giAutoCreateAlias; /* if true then auto create alias */
  927.        short  giRequestFloppy;   /* if true then request floppy on new
  928.                                     saves */
  929.        short  giStacksAreApps;   /* if true then HyperCard stacks are shown
  930.                                     with applications */
  931.        FSSpec giItemsLocation;   /* location of the At Ease Items folder */
  932.      } GestaltRec, *GestaltRecPtr, **GestaltRecHand;
  933. kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *16
  934.      gestaltApplePhotoAccessVersion? (not listed)
  935.      Returns Apple Phote Access version in BCD.
  936.  
  937.      gestaltApplePhotoAccessVersion? = 'kpcd';
  938.  
  939.      NOTE:
  940.      The above is what the documentation says. However it seems to return
  941.      always $FFFFFF7 as response.
  942. mess (QuickDraw GX [1.0])
  943.      gestaltMessageMgrVersion (not listed)
  944.      Returns the version of the Message Manager as NumVersion.
  945.  
  946.      gestaltMessageMgrVersion = 'mess';
  947.  
  948.      NOTE:
  949.      The Message Manager is an implementation of object-oriented-style
  950.      message passing within an inheritance hierarchy, that can be used from
  951.      non-OO languages.
  952.      It is used by the GX printing system, to allow the customization of
  953.      printing behaviour by letting applications (and developers of printing
  954.      extensions) intercept messages sent to the printer driver.
  955.      (Lawrence D'Oliveiro)
  956. mtcp (MacTCP cp [1.1])
  957.      gestaltMacTCPAttr? (not listed) *5
  958.      Returns the version of MacTCP, if opened, as an index-value.
  959.  
  960.      Response     Version
  961.         1          1.1
  962.         2          1.1.1
  963.         3          2.0
  964.      If MacTCP is not opened a value of 0 is returned.
  965.      No constants are defined in the documentation.
  966.  
  967.      gestaltMacTCPAttr?    = 'mtcp';
  968.      gestaltMacTCPPresent? = 0;
  969.      gestaltMacTCP11?      = 1;
  970.      gestaltMacTCP111?     = 2;
  971.      gestaltMacTCP2?       = 3;
  972. pmgr (QuickDraw GX [1.0])
  973.      gestaltPrintingMgrVersion (not listed)
  974.      Returns the version of the QuickDraw GX Printing Manager as NumVersion.
  975.  
  976.      gestaltPrintingMgrVersion = 'pmgr';
  977. qtim (QuickTime ext [1.0])
  978.      gestaltQuickTime (addition to IM QuickTime)
  979.      Returns QuickTime version as NumVersion.
  980.  
  981.      gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
  982.  
  983.      NOTES:
  984.      The returned version is obtained from 'vers' resource ID# 1.
  985.  
  986.      If you install QuickTime under System 6, a major portion of the Alias
  987.      Manager and FSSpec support is also added. But, QT doesn't implement
  988.      the Gestalt selectors because the implementation is not complete. You
  989.      must check for either Alias Mgr or QuickTime. (Michael Hecht)
  990.      If QuickTime is present, assume you have an Alias Manager, subject to
  991.      some limitations (NewAliasMinimalFromFullPath not present). Nearly all
  992.      the FSSpec calls are available (except FSpExchangeFiles) in System 6
  993.      when QuickTime is installed. See for more information Technical Note
  994.      M.QT.MovieTB.Q&As (QT 510) and IM QuickTime.
  995. scra (Easy Open ext? [1.0]) *12
  996.      gestaltScrapMgrAttr (not listed)
  997.      Returns information about the Scrap Manager.
  998.  
  999.      gestaltScrapMgrAttr             = 'scra';
  1000.      gestaltScrapMgrTranslationAware = 0;
  1001.      gestaltTranslationMgrHintOrder  = 1; *20
  1002. snhw (System? [???])
  1003.      (Sound Manager ext [3.0])
  1004.      gestaltSoundHardware (not listed)
  1005.  
  1006.      gestaltSoundHardware = 'snhw';
  1007.      gestaltASC           = 'asc ';
  1008.      gestaltDSP           = 'dsp ';
  1009.      gestaltClassicSound  = 'clas';
  1010.      gestaltAWAC?         = 'awac'; {returned on PowerPC prototype}
  1011. strm (Remote Access Aliases [1.0], part of AppleTalk Remote Access)
  1012.      gestaltRemoteAccessAttr *9 (not listed)
  1013.  
  1014.      gestaltRemoteAccessAttr   = 'strm';
  1015.      gestaltRemoteAccessExists = 0; {RA Connection Interface is available}
  1016. teat (Macintosh Drag and Drop ext [1.0])
  1017.      gestaltTEAttr *22
  1018.      Returns information about the functions and capabilities of TextEdit.
  1019.  
  1020.      gestaltTEAttr            = 'teat'; {TextEdit attributes}
  1021.      gestaltTEHasGetHiliteRgn = 0;      {TEGetHiliteRgn present}
  1022. thds (Thread Manager ext [1.1]) *15
  1023.      (QuickDraw GX ext [1.0?])
  1024.      gestaltThreadAttr (not listed)
  1025.      Returns information about the Thread Manager.
  1026.  
  1027.      gestaltThreadAttr           = 'thds'; {Thread Manager attributes}
  1028.      gestaltThreadsPresent       = 0;      {bit true if Threads present}
  1029.      gestaltSpecificMatchSupport = 1;      {bit true if Thread Mgr supp.}
  1030.                                            {exact match creation option}
  1031. ttsc (Text-To-Speech Manager ext [1.0?])
  1032.      gestaltSpeechAttr (listed in Speech Manager documentation)
  1033.      Returns information about the Speech Manager.
  1034.  
  1035.      gestaltSpeechAttr       = 'ttsc'; {Text-To-Speech Manager attributes}
  1036.      gestaltSpeechMgrPresent = 0;      {bit true if Speech Mgr present}
  1037. ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *16
  1038.      gestaltForeignFAVersion? (not listed)
  1039.      Returns Foreign File Access version in BCD.
  1040.  
  1041.      gestaltForeignFAVersion? = 'ufox';
  1042.  
  1043.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1044. xlat (Easy Open ext [1.0]) *12
  1045.      gestaltTranslationAttr (not listed)
  1046.      Returns information about the Translation Manager.
  1047.  
  1048.      gestaltTranslationAttr      = 'xlat';
  1049.      gestaltTranslationMgrExists = 0; {Translation Manager present}
  1050.  
  1051. Third Parties Software
  1052. ----------------------
  1053. !SYM (Symbionts ext [1.0] by B. Kevin Hardman)
  1054.      gestaltSymbiontsTable
  1055.      Returns a pointer to a structure containing the size of the System
  1056.      Heap before and after loading the INITs.
  1057.  
  1058.      gestaltSymbionts = '!SYM';
  1059. ApoL (Apollo ext [1.0] by Jeremy Roussak)
  1060.      gestaltApolloTable
  1061.      Returns a handle to an instance of a structure.
  1062.      See for more information the Programmers' Information chapter in the
  1063.      Apollo 1.0 documentation. (Jeremy Roussak)
  1064.  
  1065.      gestaltApolloTable = 'ApoL';
  1066. AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
  1067.      gestaltAutoBuildVersion
  1068.      Returns AutoBuild version as NumVersion.
  1069.  
  1070.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1071. BIFF (QM Biff ext [1.0] by Patrick C. Beard)
  1072.      Determines if there is mail (QuickMail). The response long word is 1
  1073.      if you have mail, and 0 if you don't.
  1074. CKI3 (AETracker cp [3.0] by C.K. Haun)
  1075.      gestaltAETrackerAddr
  1076.      This selector returns a pointer to the external interface routine for
  1077.      AETracker, details of which are in the AETracker interface guide.
  1078.      (C.K. Haun)
  1079.  
  1080.      gestaltAETrackerAddr = 'CKI3';
  1081. FrcP (Decor cp [1.0] by Francois Pottier)
  1082.      gestaltDecorAddr
  1083.      Returns a pointer to a structure which can be read or changed, and
  1084.      enables programmers to change the picture on the desktop.
  1085.  
  1086.      See for more information on how to use this structure the
  1087.      documentation included with Decor 1.0 or later.
  1088.  
  1089.      NOTE: The c is actually the option-c character (ASCII $8D).
  1090. Gast (Gestalt! appl [2.9.2] by Roland Mansson)
  1091.      gestaltGestaltVersion
  1092.      Returns the version of the application as NumVersion.
  1093.      GestaltValue is removed when application quits. Just for fun.
  1094.      (Roland Mansson)
  1095.  
  1096.      NOTE: The a is actually the option-u/a character (ASCII $8A).
  1097. GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
  1098.      Snippet code, see documentation. (See chapter 'Related Software'
  1099.      for availability).
  1100. GWat (GestaltWatch ext [1.0] by Scot Bronson)
  1101.      Returns pointer to structure where collected information is stored.
  1102.  
  1103.      NOTE: In development, not yet available.
  1104. Lnch (Network Time cp [2.0] by Pete Resnick)
  1105.      (First Launch Gestalt INIT code resource, by Pete Resnick)
  1106.      gestaltFirstLaunchAttr
  1107.      Returns info on whether the _Launch trap has been called by the
  1108.      System.
  1109.  
  1110.      Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
  1111.      _Launch trap has been called since startup of the machine. All other
  1112.      bits are reserved and currently 0. Even if not installed at INIT time,
  1113.      Network Time will install the Gestalt selector if it is not already
  1114.      there when the control panel is opened and automatically set
  1115.      bit 0 to 1.
  1116.      68000 assembler source code is available for the INIT that installs
  1117.      the selector, and INIT resource -4048 from Network Time may be
  1118.      stolen (and renumbered as desired) and used in any INIT file as
  1119.      desired. (Pete Resnick)
  1120.  
  1121.      gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
  1122.      gestaltFirstLaunchDone = 0;      {_Launch called, INIT time over}
  1123. NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
  1124.      gestaltNovellIPXVersion
  1125.      Returns the version of MacIPX as NumVersion.
  1126.      If the selector returns an error (i.e. no such selector?) then MacIPX
  1127.      is not installed. If the selector returns 0L then MacIPX is installed
  1128.      but the driver is not open. Any other values is the version.
  1129.      (Duane Murphy)
  1130.  
  1131.      gestaltNovellIPXVersion = 'NIPX';
  1132. NMBT (Attention cp [0.6] by Marco Piovanelli)
  1133.      gestaltAttentionAddr
  1134.      The response value returned is a pointer to a read-only parameter
  1135.      block in the system heap.
  1136.      See for more detailed information the ReadMe file included.
  1137. NTim (Network Time cp [2.0] by Pete Resnick)
  1138.      Returns information private to Network Time.
  1139. PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
  1140.      gestaltPwrSwitcherTable
  1141.      Returns a pointer to a private data structure (undocumented).
  1142. SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
  1143.      kSDDelayCreator
  1144.      Returns a pointer to a data structure described in the documentation
  1145.      included with Shutdown Delay.
  1146.  
  1147.      kSDDelayCreator = 'SDdD';
  1148.  
  1149.      NOTE: The d is actually the option-shift v character (ASCII $D7).
  1150. SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
  1151.      gestaltStuffItSpaceSaverAddr
  1152.      Returns the address of the SpaceSaver "command module" which allows
  1153.      developers to access all the functions of SpaceSaver.
  1154.      (Leonard Rosenthol)
  1155.  
  1156.      gestaltStuffItSpaceSaverAddr = 'SLip';
  1157. TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
  1158.      The value returned is a pointer to a Monitor information block. *14
  1159.      (Scott Bronson)
  1160. YeHa (SpeedyFinder7 cp [1.5.4?-1.5.8m] by Victor Tan)
  1161.      The structure to which the _Gestalt selector refers changes almost
  1162.      invariably from version to version of SF7. Should someone work out
  1163.      parts of the structure of the selector keep in mind that it will
  1164.      almost certainly change in the next minor release and definitely with
  1165.      the next major release. (Victor Tan)
  1166.  
  1167. Unknown Gestalt Selector Codes
  1168. ==============================
  1169. The following sections list selector codes of which the meaning is unknow.
  1170.  
  1171. Apple System Software
  1172. ---------------------
  1173. aint (System? [???])
  1174.      NOTE: Returns 2 on a C660AV and Q840AV.
  1175. ascr (AppleScript ext [1.0]) 
  1176.      gestaltAppleScriptAttr?
  1177.  
  1178.      gestaltAppleScriptAttr? = 0; {AppleScript present?}
  1179. ascv (AppleScript ext [1.0])
  1180.      gestaltAppleScriptVersion?
  1181.      Returns the version of AppleScript as NumVersion?
  1182. bast (System [7.1P])
  1183. batt (System Enabler 111 [1.0])
  1184.      (System Enabler 121 [1.0])
  1185.      (System Enabler 201 [1.0])
  1186. brcn (Screen? cp [1.0?] on Color Classic)
  1187. brcN (Energy Save cp [1.0?], part of Monitor Energy Saver)
  1188. BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
  1189.      gestaltCloseViewAttr? (not listed)
  1190.      Returns information about the CloseView Control Panel.
  1191.  
  1192.      gestaltCloseViewAttr? = 'BSDa';
  1193.      gestaltCloseViewOn?   = 0;
  1194. bugy (32-bit System Enabler [1.0])
  1195.      (Hardware System Update ext [1.0])
  1196.      (Sound Manager ext [3.0])
  1197.      (System enabler 065)
  1198.      gestaltEnablerAttr?
  1199.  
  1200.      gestaltEnablerAttr?                  =  'bugy'; ?
  1201.      gestaltEnablerEgretDispatchPatch?    =  0; {these correct the system}?
  1202.      gestaltEnablerEgretTimePatch?        =  1; { clock and modem perf.}?
  1203.      gestalt???                           =  2; {unknown, Hardware Upd.}
  1204.      gestaltEnablerEgretTickHandlerPatch? =  3; { see bit 0 & 1}?
  1205.      gestalt???                           =  4; {unknown, Hardware Upd.}
  1206.      gestaltEnablerSCSIPatch?             =  5; {floppy drive fixed}?
  1207.      gestalt???                           =  6; {unknown, Hardware Upd.}
  1208.      gestaltEnabler32bit?                 =  7; {32-bit enabler present}?
  1209.      gestalt???                           =  9; {unknown, Sound Mgr 3.0}
  1210.      gestalt???                           = 11; {unknown, Hardware Upd.}
  1211.      gestalt???                           = 12; {unknown, Hardware Upd.}
  1212.      gestalt???                           = 13; {unknown, Hardware Upd.}
  1213.      gestalt???                           = 14; {unknown, Hardware Upd.}
  1214.      gestalt???                           = 15; {unknown, Hardware Upd.}
  1215.      gestalt???                           = 16; {unknown, Hardware Upd.}
  1216.      gestaltEnablerKeyboardPatch?         = 17; {corrects Adjustable Kbd
  1217.                                              gestaltKeyboardType response?}
  1218.      gestalt???                           = 18; {unknown, Hardware Upd.}
  1219.  
  1220.      WARNING:
  1221.      These are ALL guesses. Well not entirely, I used the ResEdit CODE
  1222.      Editor to peek into the 32-bit System Enabler and the Hardware System
  1223.      update. Please check if I'am right. You should be able to find answers
  1224.      in the INIT resource of the Hardware Update and the names of the PTCH
  1225.      resources in version 1.0 were also useful...
  1226.      The System Enablers (for new Macintosh models) don't seem to install
  1227.      or change any Gestalt selector to indicate their presence.
  1228. bugz (System (Tuna Helper INIT rsrc) [7.0]/Tune-up ext)
  1229. cfmg (System [7.1 on PowerPC prototype])
  1230. cput (System [7.1 on PowerPC prototype])
  1231. dude (System Enabler 111 [1.0])
  1232.      (System Enabler 121 [1.0])
  1233.      (System Enabler 201 [1.0])
  1234. dudi (System Enabler 111 [1.0])
  1235.      (System Enabler 121 [1.0])
  1236.      (System Enabler 201 [1.0])
  1237. fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1238.      Installed by Finder extension?
  1239. fnd  (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1240.      Installed by Finder extension?
  1241. fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1242.      Installed by Finder extension?
  1243. fnda (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1244.      NOTE: The a is actually the option-a character (ASCII $8C).
  1245. FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1246.      Installed by Finder extension?
  1247. fnd* (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1248.      Installed by Finder extension?
  1249.  
  1250.      NOTE: The * is actually the shift-6 character (ASCII $F6).
  1251. gntz (System [7.1 on PowerPC prototype])
  1252. hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  1253. idsp (???)
  1254. port (System Enabler 111 [1.0])
  1255.      (System Enabler 121 [1.0])
  1256.      (System Enabler 201 [1.0])
  1257. scsi (System [7.1?])
  1258.      NOTE: Returns 3 on PowerPC prototype and Centris 660AV
  1259. shal (System [7.1?])
  1260.      NOTE: Returns 2 on PowerPC prototype and 1 on Centris 660AV
  1261. udsk (System [7.1 on PowerPC prototype])
  1262. udsv (System [7.1 on PowerPC prototype])
  1263. vmbs (System, Virtual Memory enabled [7.0])
  1264.      gestaltVMBackingStoreRef? (not listed)
  1265.      Returns the file reference number of the Virtual Memory storage file.
  1266.  
  1267.      gestaltVMBackingStoreRef? = 'vmbs';
  1268. vmcl (System, VM on [7.0])
  1269. OSType(7) (System [6.0.4])
  1270.      Returns LongInt('carl') and a result code of noErr.
  1271. OSType(13) (System [6.0.4])
  1272.      Returns LongInt('bbmc') and a result code of noErr.
  1273.  
  1274. Apple Additional Software
  1275. -------------------------
  1276. 3615 (Express Modem cp [1.0], part of Express Modem Software)
  1277. admn (AppleShare Admin appl [3.0])
  1278.      gestaltASAdminAttr?
  1279.  
  1280.      gestaltASAdminAttr?    = 'admn';
  1281.      gestaltASAdminPresent? = 0;
  1282. afps (AppleShare File Server? app? [4.0?])
  1283.      Bit 0 and 16 set.
  1284. asps (AppleShare Print Server appl [3.0])
  1285.      gestaltASPrintServerAttr?
  1286.  
  1287.      gestaltASPrintServerAttr?    = 'asps';
  1288.      gestaltASPrintServerPresent? = 0;
  1289. bART (MacCheck app [1.0])
  1290. BaRT (MacCheck app [1.0])
  1291. comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
  1292.  
  1293.      NOTES:
  1294.      The name "QuickDraw Font Plus" is translated from Japanese and may be
  1295.      translated differently by Apple Computer, Inc.
  1296.  
  1297.      I think 'comp' stands for 'composite', as the INIT contains patches to
  1298.      the Font Manager needed to handle 'composite font suitcases'.
  1299.      (Marco Piovanelli)
  1300. doub (WorldScript II ext [???], part of KanjiTalk7)
  1301.      gestaltDoubleByteScript?
  1302.      This selector seems to be installed by WorldScript II (the
  1303.      System 7.1 ext needed to handle double-byte scripts like Japanese,
  1304.      Korean and Traditional Chinese).
  1305. intD (??? [???])
  1306.  
  1307.      NOTE:
  1308.      This is a mystery selector.  It isn't installed by any software, as
  1309.      far as I know, but the Finder 7.1 checks for this selector in certain
  1310.      situations. (Marco Piovanelli)
  1311. futr (ThreadsINIT ext [2.0?], part of Threads Package)
  1312. gFax (Fax Extension ext [1.1?], part of Express Modem Software)
  1313. hgfd (AppleShare File Server appl [3.0])
  1314.      gestaltASFileServerAttr?
  1315.  
  1316.      gestaltASFileServerAttr?    = 'hgfd';
  1317.      gestaltASFileServerPresent? = 0;
  1318. mash (System [7.1P?]/At Ease [1.0?])
  1319. mfdr (At Ease [1.0])
  1320. Remt (AutoRemounter cp [???])
  1321. slnk (MNPLinkTool? [1.0], part of AppleTalk Remote Access)
  1322. sndx (Sound Manager ext [3.0]?)
  1323.      gestaltSoundMgrAttr?
  1324.  
  1325.      gestaltSoundMgrAttr?    = 'sndx'?;
  1326.      gestaltSoundMgrPresent? = 0?
  1327. thng (ThreadsINIT ext [2.0?], part of Threads Package)
  1328. thrd (ThreadsINIT ext [2.0?], part of Threads Package)
  1329. tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
  1330.      gestaltInlineExtensionAttr?
  1331.      Returns information about the Inline Extension, if present.
  1332.  
  1333.      gestaltInlineExtensionAttr?    = 'tmTE';
  1334.      gestaltInlineExtensionPresent? = 0;
  1335. tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
  1336.      gestaltInlineExtensionVersion?
  1337.      Returns the version of the Inline Extension as BCD (?).
  1338.  
  1339.      gestaltInlineExtensionVersion? = 'tmTV';
  1340.  
  1341. Third Parties Software
  1342. ----------------------
  1343. Especially the Third Party selectors may change with every new release and
  1344. are therefore only listed in the 'known selectors' part when the author has
  1345. described the structure in the documentation or by email to me.
  1346.  
  1347. AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
  1348. ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1349.      NOTE:
  1350.      Not installed by AfterDark but the GDEF indicates it is able to return
  1351.      a response.
  1352. ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1353.      NOTE:
  1354.      Not installed by AfterDark but the GDEF indicates it is able to return
  1355.      a response.
  1356. ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1357.      NOTE:
  1358.      Not installed by AfterDark but the GDEF indicates it is able to return
  1359.      a response.
  1360. ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1361.      NOTE:
  1362.      Not installed by AfterDark but the GDEF indicates it is able to return
  1363.      a response.
  1364. ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
  1365. ADrk (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1366. AP05 (RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
  1367.       by Insignia Solutions Inc.
  1368. AP17 (???)
  1369. ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
  1370. aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1371. AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
  1372. A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
  1373. bMRN (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
  1374.       by NOW Software)
  1375. CHSR (ChooserUser [1.2?] by Maurice Volaski)
  1376. DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
  1377. DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
  1378. DFlh (DiskFlash cp [1.0] part of ALSoft Power Utilities by ALSoft, Inc.)
  1379. Dpth (DepthMaster cp [1.0] by Victor Tan)
  1380. DWG! (Volume Menu cp [1.0], by David Gladstone, Chris Burns, Julian Harris)
  1381. EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
  1382. ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
  1383. ESOC (Serial of Champions ext [???] by Mike Throckmorton)
  1384. Extn (NOW Startup Manager cp [4.0?] part of NOW Utilities 4.0.1p package
  1385.       by NOW Software)
  1386. Fie  (Icon7 ext [???] by Inline Designs)
  1387.      gestaltIcon7?
  1388. fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
  1389.      package)
  1390. fPth (FinderPaths cp? [???])
  1391.      NOTE: The f is actually the option-f character (ASCII $C4).
  1392. FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
  1393. fWmM (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
  1394.       by NOW Software)
  1395. GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  1396. gV00 (PowerPort cp? [???])
  1397. gV01 (PowerPort cp? [???])
  1398. gV02 (PowerPort cp? [???])
  1399. gV03 (PowerPort cp? [???])
  1400. gV04 (PowerPort cp? [???])
  1401. He20 (Helium cp [1.0?] by Robert L. Mathews)
  1402. HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
  1403.      GDEF always returns value 1.
  1404. HtLk (Reference Link ext [1.0] by James W. Walker)
  1405. iHnd (Invisible Hand cp [1.0] by Carl Mauer)
  1406.      NOTE:
  1407.      Because this cp patches the _Random trap you can use this selector to
  1408.      determine its presence and refuse to continue.
  1409. Intj (Interjection ext [???])
  1410. JAiN (Rival cp by Inline Designs)
  1411.      gestaltRival
  1412.      NOTE: The i is actually the option-u/i character (ASCII $95).
  1413. jsm1 (???)
  1414. JXNM (NowMenus cp [4.0?] part of NOW Utilities 4.0.1p package
  1415.       by NOW Software)
  1416. KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
  1417. KBCM (???)
  1418. LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
  1419. LxRZ (???)
  1420. MClk (SuperClock! [4.0] by Steve Christensen)
  1421. MJC& (AutoMenus II cp [???] by Michael Conrad)
  1422. MV10 (TearOFF cp [???] by Bad Boys' Software)
  1423. NGst (NokNok cp [1.0?])
  1424. NkNk (NokNok cp [1.0?])
  1425. NowT (NOW Toolbox ext [4.0?] part of NOW Utilities 4.0.1p package
  1426.       by NOW Software)
  1427. PBUf (???)
  1428. PBUt (???)
  1429. PRT+ (PrintAid [0.9?] by James W. Walker)
  1430. QRef (QuickRef ext? [1.0] by Scott Bronson)
  1431. RQDC (DropCheck cp [???] by Ronald B. Queloz)
  1432. SAVC (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1433.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  1434. SAVR (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1435.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  1436.      Returns one (1) if screensaver is inactive, other values observed are
  1437.      $0x0017 and $0x001B.
  1438. SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
  1439.      ALSoft, Inc.)
  1440. SFun (SF Windows [1.0] by Damon Cokenias)
  1441. SFwd (Open-wide cp [3.0?] by James W. Walker)
  1442. SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
  1443. ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
  1444. STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
  1445. Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
  1446. UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by Keisuke Hara)
  1447.      See also FtCg selector.
  1448. View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
  1449.      gestaltViewerEngine
  1450. XTND (not installed by any software)
  1451.      NOTE:
  1452.      Is used in some code to check if XTND engine is present. However it is
  1453.      never installed, so supposedly it is meant for future use. Like a
  1454.      built-in XTND engine in the System Software? When the selector is
  1455.      installed all operations are dispatched through trap $ABF4 otherwise
  1456.      the library provides the code. (Marco Piovanelli)
  1457. WREO (Replace Existing Options cp [???] by Jonathon Summers)
  1458.      NOTE: The W is actually the option-w character (ASCII $B7).
  1459. Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
  1460.      NOTE: The W is actually the option-w character (ASCII $B7).
  1461. *Men (OtherMenu ext [1.0b16?, discontinued?] by James W. Walker)
  1462.  
  1463. Gestalt Manager Calls
  1464. =====================
  1465. All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
  1466. in this chapter.
  1467.  
  1468. Gestalt Manager Routines
  1469. ------------------------
  1470. The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
  1471. listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
  1472. documented. Sorry, for mixing Pascal and C source, I will convert
  1473. everything to C when I know enough about it and have the time.
  1474.  
  1475. FUNCTION Gestalt (selector: OSType; VAR Response: LongInt): OSErr;
  1476.      Available since System 6.0.4.
  1477.      Trap Macro
  1478.        _Gestalt ($A1AD)
  1479.      Registers on entry   D0: selector code
  1480.      Registers on exit    A0: response
  1481.                           D0: result code
  1482.      Result codes
  1483.        noErr                       0 No error
  1484.        gestaltUnknownErr       -5550 Could not obtain the response
  1485.        gestaltUndefSelectorErr -5551 Undefined selector
  1486. FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
  1487.      Available since System 6.0.4.
  1488.      Trap Macro
  1489.        _NewGestalt ($A3AD)
  1490.      Registers on entry   A0: address of new selector function
  1491.                           D0: selector code
  1492.      Registers on exit    D0: result code
  1493.      Result codes
  1494.        noErr                       0 No error
  1495.        memFullErr               -108 Ran out of memory
  1496.        gestaltDupSelectorErr   -5552 Selector already exists
  1497.        gestaltLocationErr      -5553 Function not in system heap
  1498. FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
  1499.                          VAR oldGestaltFunction: ProcPtr): OSErr;
  1500.      Available since System 6.0.4.
  1501.      Trap Macro 
  1502.        _ReplaceGestalt ($A5AD)
  1503.      Registers on entry   A0: address of new selector function
  1504.                           D0: selector code
  1505.      Registers on exit    A0: address of old selector function
  1506.                           D0: result code
  1507.      Result codes
  1508.        noErr                       0 No error
  1509.        gestaltUndefSelectorErr -5551 Undefined selector
  1510.        gestaltLocationErr      -5553 Function not in system heap
  1511. #define CallSelectorFunctionProc(userRoutine, selector, response)  \
  1512.         (*userRoutine)(selector, response)
  1513.      Trap Macro 
  1514.        ??? (???)
  1515.      Registers on entry   ???
  1516.      Registers on exit    ???
  1517.      Result codes
  1518.        noErr                       0 No error
  1519.        ???                       ??? ???
  1520. #define NewSelectorFunctionProc(userRoutine)  \
  1521.         (SelectorFunctionUPP)(userRoutine)
  1522.      Trap Macro 
  1523.        ??? (???)
  1524.      Registers on entry   ???
  1525.      Registers on exit    ???
  1526.      Result codes
  1527.        noErr                       0 No error
  1528.        ???                       ??? ???
  1529.          
  1530. Undocumented Gestalt Manager Routines
  1531. -------------------------------------
  1532. FUNCTION? GestaltDispatch? (???):OSErr;?
  1533.      Trap Macro
  1534.        _GestaltDispatch ($A0AD)
  1535.      Registers on entry   ???
  1536.      Registers on exit    ???
  1537.      Result codes
  1538.        noErr                       0 No error
  1539.        ???
  1540.  
  1541.      NOTE:
  1542.      Found in the MPW, THINK C and THINK Pascal Traps Interface file
  1543.      on 'Bookmark CD 14'.
  1544.      Available since System 6.0.4 but code will always return error -50
  1545.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  1546. FUNCTION? GetGestaltProcPtr? (selector?: OSType;
  1547.                               var selectorfunction: ProcPtr): OSErr;?
  1548.      Trap Macro
  1549.        _GetGestaltProcPtr ($A7AD)
  1550.      Registers on entry   D0: selector code?
  1551.      Registers on exit    ??: address of selector function
  1552.      Result codes
  1553.        noErr                       0 No error
  1554.        ???
  1555.  
  1556.      NOTE:
  1557.      Found in the MPW Traps Interface file on 'Bookmark CD 14'.
  1558.      Available since System 6.0.4 but code will always return error -50
  1559.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  1560.      I (Rene Ros) have written Pascal code to do what this system call
  1561.      probably is planned to do in the future.
  1562.  
  1563. Gestalt Value Routines
  1564. ----------------------
  1565. Please note the GestaltValue routines are currently invoked through a
  1566. library, and only in the future will GestaltValue be moved into the OS
  1567. proper. The GestaltValue functions are stack based and don't use registers.
  1568. The GestaltValue library first checks to see if trap $ABF1 is implemented
  1569. (not with any system software available). If trap $ABF1 is implemented, all
  1570. calls to the library are routed to this trap, otherwise the library uses
  1571. embedded code.
  1572. WARNING:
  1573. The GestaltValue library distributed originally checks for the wrong trap
  1574. (_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
  1575. trap is installed by the Thread Manager Extension. See Related Software
  1576. chapter for availability.
  1577. (Most info about the GestaltValue functions was provided by
  1578. Marco Piovanelli and Dave Radcliff).
  1579.  
  1580. FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  1581.      Available as glue code.
  1582.      Trap Macro                      Selector
  1583.        _GestaltValueDispatch ($ABF1) $0401
  1584.      Result codes
  1585.        noErr                       0 No error
  1586.        unimpErr                   -4 Unimplemented core routine
  1587.        memFullErr               -108 Ran out of memory
  1588.        (and other memory errors)
  1589.        gestaltDupSelectorErr   -5552 Selector already exists
  1590. FUNCTION ReplaceGestaltValue (selector: OSType;
  1591.                               replacementValue: LongInt): OSErr;
  1592.      Available as glue code.
  1593.      Trap Macro                      Selector
  1594.        _GestaltValueDispatch ($ABF1) $0402
  1595.      Result codes
  1596.        noErr                       0 No error
  1597.        unimpErr                   -4 Unimplemented core routine
  1598.        memFullErr               -108 Ran out of memory
  1599.        (and other memory errors)
  1600.        gestaltUndefSelectorErr -5551 Undefined selector
  1601. FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
  1602.      Available as glue code.
  1603.      Trap Macro                      Selector
  1604.        _GestaltValueDispatch ($ABF1) $0203
  1605.      Result codes
  1606.        noErr                       0 No error
  1607.        unimpErr                   -4 Unimplemented core routine
  1608.        gestaltUndefSelectorErr -5551 Undefined selector
  1609.  
  1610. Kilo-liners
  1611. ===========
  1612. This chapter will list very small pieces of code which are related to
  1613. any Gestalt Routine.
  1614.  
  1615. Modula-2 source:
  1616. TYPE
  1617.     SelectorFunction =
  1618.       PROCEDURE
  1619.       (
  1620.        (*selector :*) OSType,
  1621.        VAR (*response :*) LONGCARD
  1622.       ) : OSErr;
  1623.  
  1624. C-source:
  1625. typedef pascal OSErr (*SelectorFunction)(OSType, long);
  1626.  
  1627. Direct Gestalt Calls
  1628. --------------------
  1629. You can use the following code to call directly the Gestalt, NewGestalt and
  1630. ReplaceGestalt traps. In that way the (large) glue code will not be
  1631. installed by your compiler. (Contributions by Lawrence D'Oliveiro and
  1632. Marco Piovanelli).
  1633.  
  1634. Modula-2 source:
  1635.     PROCEDURE Gestalt
  1636.       ( selector : OSType;
  1637.         VAR response : LONGINT
  1638.       ) : OSErr;
  1639.       (* direct call to Gestalt trap. *)
  1640.  
  1641.         CODE
  1642.             0225FH,    (* move.l (sp)+, a1 *)
  1643.             0201FH,    (* move.l (sp)+, d0 *)
  1644.             0A1ADH,    (* _Gestalt *)
  1645.             02288H,    (* move.l a0, (a1) *)
  1646.             03E80H;    (* move.w d0, (sp) *)
  1647.  
  1648. Pascal-source:
  1649.      FUNCTION Gestalt (selector: OSType;
  1650.                        VAR response: LONGINT): OSErr;
  1651.      {direct call to Gestalt trap.}
  1652.      inline $225F, $201F, $A1AD, $2288, $3E80;
  1653.  
  1654. Modula-2 source:
  1655.      PROCEDURE NewGestalt
  1656.       ( selector: OSType;
  1657.         gestaltFunction: SelectorFunction
  1658.       ): OSErr;
  1659.      (* direct call to NewGestalt trap. *)
  1660.  
  1661.      CODE   0205FH,    (* move.l (sp)+, a0 *)
  1662.             0201FH,    (* move.l (sp)+, d0 *)
  1663.             0A3ADH,    (* _NewGestalt *)
  1664.             03E80H;    (* move.w d0, (sp) *)
  1665.  
  1666. Pascal-source:
  1667.      FUNCTION NewGestalt (selector: OSType;
  1668.                           gestaltFunction: ProcPtr): OSErr;
  1669.      {direct call to NewGestalt trap}
  1670.      inline $205F, $201F, $A3AD, $3E80;
  1671.  
  1672. Modula-2 source:
  1673.     PROCEDURE ReplaceGestalt
  1674.       ( selector : OSType;
  1675.         gestaltFunction : SelectorFunction;
  1676.         VAR oldGestaltFunction : SelectorFunction
  1677.       ) : OSErr;
  1678.       (* direct call to Gestalt trap. *)
  1679.  
  1680.         CODE
  1681.             0225FH,    (* move.l (sp)+, a1 *)
  1682.             0205FH,    (* move.l (sp)+, a0 *)
  1683.             0201FH,    (* move.l (sp)+, d0 *)
  1684.             0A5ADH,    (* _ReplaceGestalt *)
  1685.             02288H,    (* move.l a0, (a1) *)
  1686.             03E80H;    (* move.w d0, (sp) *)
  1687.  
  1688. Pascal-source:
  1689.      FUNCTION ReplaceGestalt (selector: OSType;
  1690.                               gestaltFunction: ProcPtr;
  1691.                               VAR oldGestaltFunction: ProcPtr
  1692.                              ): OSErr;
  1693.      {direct call to ReplaceGestalt trap.}
  1694.      inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
  1695.  
  1696. Direct GestaltValue Calls
  1697. -------------------------
  1698. You can use the following code to call directly the NewGestaltValue,
  1699. ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
  1700. trap is available.
  1701.  
  1702. Pascal-source: *20
  1703.      FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
  1704.      inline $303C, $0401, $ABF1;
  1705.  
  1706.      FUNCTION ReplaceGestaltValue(selector: OSType,
  1707.                                   replacementValue: LongInt): OSErr;
  1708.      inline $303C, $0402, $ABF1;
  1709.      
  1710.      FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
  1711.      inline $303C, $0203, $ABF1;
  1712.  
  1713. GestaltSelectorZero
  1714. -------------------
  1715. With all the selectors that are supposed to return non-zero values if
  1716. installed, it may be helpful to have a utility routine that returns a zero
  1717. value (instead of an error) if a selector isn't installed. It's short and
  1718. sweet because it makes a direct call to the _Gestalt trap; of course this
  1719. means you can't use it on systems earlier than 6.0.4.
  1720. (Contributed by Lawrence D'Oliveiro)
  1721.  
  1722. Modula-2 source:
  1723.      PROCEDURE GestaltSelectorZero (Selector: OSType): LONGCARD;
  1724.      (* returns the value of the specified Gestalt selector,
  1725.      or zero if unknown. *)
  1726.      CODE   0201FH,    (* move.l (sp)+, d0 *)
  1727.             0A1ADH,    (* _Gestalt *)
  1728.             06702H,    (* beq.s @2 *)
  1729.             091C8H,    (* sub.l a0, a0 *)
  1730.             02E88H;    (* @2: move.l a0, (sp) *)
  1731.  
  1732. Pascal-source:
  1733.      FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
  1734.      {returns the value of the specified Gestalt selector,}
  1735.      {or zero if unknown.}
  1736.      inline $201F, $A1AD, $6702, $91C8, $2E88;
  1737.  
  1738. Call Gestalt Definiton Direct
  1739. -----------------------------
  1740. Suppose you have just loaded a GDEF resource, or replaced one and keep the
  1741. original around and store a pointer to it somewhere private. Suppose next,
  1742. you want to call it to obtain a response without using yet another selector.
  1743. Thats what the following inline code is usefull for. Just pass it the
  1744. usual selector and result parameters but also a pointer to the GDEF
  1745. (Lock it if it's still a relocatable block).
  1746.  
  1747. Pascal-source:
  1748.      FUNCTION CallGestaltDEF (selector: OSType;
  1749.                               var result: LongInt;
  1750.                               aRoutine: ProcPtr): OSErr;
  1751.      inline $205F, $4E90;
  1752.             {MOVE.L (SP)+, A0}
  1753.             {JSR (A0)}
  1754.  
  1755. Abbreviations
  1756. =============
  1757. ADB      - Apple Desktop Bus
  1758. AS       - AppleShare
  1759. ASC      - Apple Sound Chip
  1760. ASIC     - Application specfic integrated circuit
  1761. AWAC     - ???
  1762. Caboose  - processor that manages the keyswitch, system power,
  1763.            the real-time clock, and parameter RAM 
  1764. CLUT/DAC - color look-up table and digital-to-analog converter IC
  1765. Combo    - chip, combines the functions of the SCC and the SCSI controller
  1766. CPU      - Central Processing Unit
  1767. DAFB     - Direct Access Frame Buffer
  1768. DAV      - Digital Audio Video
  1769. DDC      - Display Driver Chip
  1770. DFAC     - Digitally Filtered Audio Chip
  1771. DMA      - Direct Memory Access
  1772. DN       - Developer Note
  1773. DSP      - Digital Signal Processor
  1774. FPU      - Floating Point Unit
  1775. GDEF     - Gestalt DEFinition (code resource)
  1776. GPi      - General Purpose Input
  1777. IM       - Inside Macintosh (old volumes I-VI)
  1778. IOP      - Input/Output Processor
  1779. IWM      - Integrated Woz Machine
  1780. JDB      - Junction Data Bus
  1781. MCU      - Memory Control Unit
  1782. MMU      - Memory Management Unit
  1783. OCE      - Open Colloboration Environment
  1784. OSS      - ???
  1785. PDS      - Processor-Direct Slot
  1786. PGC      - Parity Generator Chip
  1787. PMMU     - Paged Memory Management Unit
  1788. PSRAM    - Pseudo Static RAM
  1789. PPC      - Process-to-Process Communication
  1790. PWM      - Pulse-Width Modulated?
  1791. RAMDAC   - Random Access Memory, Digital/Analog Converter
  1792. RBV      - RAM-Based Video
  1793. RTC chip - Real-Time Clock chip
  1794. SCC      - Serial Communications Controller
  1795. SCSI     - Small Computer System Interface
  1796. SIMM     - Single In-line Memory Module
  1797. Sonic    - chip for built-in Ethernet
  1798. Sporty   - a custom IC that provides sound output amplification functions
  1799. SRAM     - Static RAM
  1800. SWIM     - Super Integrated Woz Machine
  1801. TN       - Technical Note
  1802. VIA      - Versatile Interface Adapter
  1803. VRAM     - Video RAM
  1804. VM       - Virtual Memory
  1805. VDAC     - Video Digital to Analog Converter
  1806. YANCC    - Yet Another NuBus Controller Chip
  1807.  
  1808. FA       - File Access
  1809. RA       - Remote Access
  1810.  
  1811. Sources
  1812. =======
  1813.  *1 Apple Inc.; TN M.OV.GestaltSysenvirons (OV 16), May 1987
  1814.  *2 Symantec Corp.; THINK Pascal 4.0.1
  1815.  *3 Carl C.Hewitt; Gestalt DA 0.4 1990
  1816.  *4 Apple Computer Inc.; TN M.NW.AppleTalk2 (NW 13), Feb.1992
  1817.  *5 Apple Computer Inc.; MacTCP Programmer's Guide.
  1818.  *6 Apple Computer Inc.; QuickTime ImageCompression source files
  1819.  *7 Symantec Corp.; Think C GestaltGlue source files
  1820.  *8 Eric Simenel, Apple Computer France; Gestalt dcmd 1.0
  1821.  *9 Apple Computer Inc.; AppleTalk Remote Access API External
  1822.                           Reference Specification
  1823. *10 Symantec Corp.; THINK Reference 1.0
  1824. *11 Apple Computer Inc.; CommToolbox 1.1 source files
  1825. *12 Apple Computer Inc.; Macintosh Easy Open programmer's docs
  1826. *13 Apple Computer Japan, Inc.; sysvINIT source files
  1827. *14 ICOM Simulations; TMON Professional Reference Manual (p.192)
  1828. *15 Apple Computer Inc.; Thread Manager 1.1 documentation
  1829. *16 Apple Computer Inc.; TN M.DV.CD-ROMDriver (DV 22), May 1993
  1830. *17 Apple Computer Inc.; TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
  1831. *18 Apple Computer Inc.; TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
  1832. *19 Apple Computer Inc.; MPW Interface files on Bookmark CD 14
  1833. *20 Apple Computer Inc.; GestaltEqu interface files on ETO #12
  1834. *21 Apple Computer Inc.; 'Sept 93 Late Breaking Q&As' on Bookmark CD 15
  1835. *22 Apple Computer Inc.; Drag Manager Programmer's Guide
  1836.  
  1837. Miscellaneous
  1838. =============
  1839. This chapter lists a number of miscellaneous data.
  1840.  
  1841. AppleShare File & Print Server selector codes
  1842. ---------------------------------------------
  1843. The selectors are defined when the application has run. If it is still
  1844. running (or wasn't properly quit) the response is one. When the application
  1845. has properly quit the response is zero.
  1846.      admn AppleShare Admin
  1847.      asps AppleShare Print Server
  1848.      hgfd AppleShare File Server
  1849.  
  1850. Glue code
  1851. ---------
  1852. The following programming software includes glue-code to return some
  1853. responses even if the Gestalt Manager is not available. Every entry
  1854. includes the selectors of which the Glue-code can return a response.
  1855.  
  1856. Symantec THINK Pascal [at least since 4.0]:
  1857.      atlk, fpu , kbd , kbd , lram, mach, mmu , qd  , ram , sysv, vers
  1858.  
  1859. Related Software
  1860. ----------------
  1861. Listed below is software which may be of interest to developers because
  1862. they are a tool providing information from the Gestalt Manager, include
  1863. Gestalt-related source code or provide additional capabilities to the
  1864. Gestalt Manager. Included is also were you can find or get a copy.
  1865. All software available on sumex-aim.stanford.edu is also available on the
  1866. INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
  1867. may have one or more mirror sites as well. Locations on CompuServe are not
  1868. included.
  1869.  
  1870. 5thColumn, GestaltProbe (by Kamran Golriz)
  1871.      Extension with MPW Tools to query other mac on a network, one of
  1872.      the tools is GestaltProbe.
  1873.        CD-ROM: Bookmark CD (Apple Developer Group)
  1874.                  :Tools & Applications:Network & Communications:5th Column:
  1875. AEgestalt (by Kent Sandvik)
  1876.      Uses Apple Events to get Gestalt response from remote machine,
  1877.      includes C-source. (Requires color?? Doesn't run on MacPlus)
  1878.        FTP:    ftp.apple.com [130.43.2.3]
  1879.                  /dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
  1880.        CD-ROM: Bookmark CD (Apple Developer Group)
  1881.                  :Documentation & Samples:Sample Code:Snippets:
  1882.                  Platforms & Tools:AEGestalt 1.0:
  1883. DisplayGestalt (by Craig Marciniak)
  1884.      Small application displays configuration using Gestalt Mgr, includes
  1885.      C-source.
  1886.        FTP:    mac.archive.umich.edu [141.211.165.34]
  1887.                  /development/libraries/displaygestalt.cpt.hqx
  1888. Feature Teller 1.0 (by Jennifer Minge)
  1889.      Sample application quering Gestalt Mgr (or SysEnvirons if not
  1890.      available). Includes THINK Pascal source.
  1891.        CD-ROM: Bookmark CD (Apple Developer Group)
  1892.                  :Tools & Applications:OS/Toolbox:Feature Teller 1.0:
  1893. Gestalt! 2.9.4 (by Roland Mansson)
  1894.      Displays responses from installed selectors.
  1895.        FTP:    ftp.lu.se [130.235.132.89]
  1896.                  /pub/mac/util/Gestalt!_294.cpt.hqx
  1897.                sumex-aim.stanford.edu [36.44.0.6]
  1898.                  /info-mac/util/gestalt-28.hqx
  1899. GestaltDA 0.4 (by Carl C. Hewitt)
  1900.      Displays responses from installed selectors.
  1901.        CD-ROM: Bookmark CD (Apple Developer Group)
  1902.                  :Tools & Applications:OS/Toolbox:GestaltDA 0.4
  1903. Gestalt DCMD
  1904.      This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
  1905.      when you're in MacsBug.
  1906.        FTP:    ftp.apple.com [130.43.2.3]
  1907.                  /dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
  1908.        CD-ROM: Bookmark CD (Apple Developer Group)
  1909.                  :Documentation & Samples:Sample Code:Snippets:
  1910.                  Platforms & Tools:Gestalt dcmd:
  1911. GestaltExt (by Andre Cavegn)
  1912.      External for 4TH Dimension Relational Database application from
  1913.      ACI/ACI US.
  1914.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  1915.                  /info-mac/dev/a4d/ext/gestalt-ext.hqx
  1916. GestaltGlue
  1917.      Glue code and interface in C and assembly.
  1918.        CD-ROM: Bookmark CD (Apple Developer Group)
  1919.                  :Documentation & Samples:Sample Code:System 7.0 samples:
  1920.                  DTS.Utilities:Gestalt*
  1921. GestaltTalk (by Brigham Stevens, Apple Computer DTS)
  1922.      Code part of Notification Hacks to show how you can communicate
  1923.      between an application and an INIT using the Gestalt Mgr. Includes
  1924.      C-source files.
  1925.        CD-ROM: Bookmark CD (Apple Developer Group)
  1926.                  :Documentation & Samples:Sample Code:Snippets:
  1927.                  Toolbox:Notification Hacks:GestaltTalk:
  1928. GestaltValue (anonymous, Apple Computer Inc.)
  1929.      Library and interface for use of the GestaltValue functions.
  1930.        CD-ROM: Bookmark CD (Apple Developer Group)
  1931.                  :Tools & Applications:OS/Toolbox:GestaltValue:
  1932.        email:   Dave Radcliff, Mac DTS
  1933.                 radcliff@apple.com
  1934. GestaltWatch ext 1.0a1 (by Scott Bronson)
  1935.      Tracks all calls to NewGestalt and ReplaceGestalt traps.
  1936.      Not available yet.
  1937. Gestalt XFCN 3.2.1 (by Jeff Iverson)
  1938.      Hypercard XFCN to query the Gestalt Manager.
  1939.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  1940.                  /info-mac/card/gestalt-321.hqx
  1941. Gestaltzeigen appl 1.0 (by B. Kevin Hardman)
  1942.      Displays responses from installed selectors and any bit
  1943.      interpretation. Not available yet.
  1944. Technical Notes:
  1945.      M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
  1946.      M.NW.AppleTalk2         (AppleTalk The Rest Of the Story)
  1947.      M.OS.GestaltMgr.Q&As    (Gestalt Manager Questions and Answers)
  1948.        FTP:    ftp.apple.com [130.43.2.3]
  1949.                  /dts/mac/tn/
  1950.                    overview/gestalt-and-system-environs.hqx
  1951.                    networking/appletalk2.hqx
  1952.                    M.OU.GestaltMgr.Q&As not yet available 
  1953.        CD-ROM: Bookmark CD (Apple Developer Group)
  1954.                  :Documentation & Samples:Mac Tech Notes:
  1955.                    Overview (OV):OV 16 - Gestalt & SysEnvirons
  1956.                    Networking (NW):NW 13 - AppleTalk The Rest Of
  1957.                    Operating System (OS):OS 505 - Gestalt Mgr Q&As
  1958. Test Gestalt
  1959.      Examples to test for QuickDraw version and Virtual Memory status,
  1960.      includes C-source.
  1961.        FTP:    ftp.apple.com [130.43.2.3]
  1962.                  /dts/mac/sc/snippets/toolbox/testgestalt.hqx
  1963.       CD-ROM:  Bookmark CD (Apple Developer Group)
  1964.                  :Technical Documentation:Sample Code:Snippets:
  1965.                  Toolbox:TestGestalt:
  1966.  
  1967. About this list
  1968. ===============
  1969. I would like to see this list to be a combined effort by different persons
  1970. who have together access to a wide area of information.
  1971. This list may contain (educated) guesses and perhaps even false
  1972. information, so no guarantee is made about the contents.
  1973. You may use this information freely (see Legal Stuff chapter), but when you
  1974. find information not included in IM VI or in this list; please mail it me.
  1975. If you have additions, corrections, comments, suggestions, news about
  1976. available software, etc., please mail me. Please, also mention the source
  1977. you used.
  1978. For ways to contact me, see my address at the end of this list. If you want
  1979. to remain anonymous, please mention this and it will be taken care of.
  1980. I don't have all the documentation or knowledge and I don't want to, and
  1981. I'am certainly not Mr.Gestalt.
  1982.  
  1983. Availability
  1984. ------------
  1985. If you have downloaded this list from CompuServe, BBS, or any other service,
  1986. you will notice some strange things like 'FTP-sites' which have to do
  1987. with the fact that this list originates from INTERNET.
  1988.  
  1989. This list is originally distributed in the following ways:
  1990.  
  1991. **INTERNET**
  1992.  
  1993. USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
  1994. This list has become too large to post to c.s.m.p., so starting from
  1995. version 2.2 this list will no longer be posted. Instead an announcement
  1996. will be posted informing were you can find the latest version.
  1997.  
  1998. FTP-site
  1999. sumex-aim.stanford.edu [36.44.0.6]
  2000. Every minor and major version is submitted to the info-mac archives at
  2001. sumex-aim.stanford.edu. (/info-mac/dev/info/gestalt-selectors-XX.hqx)
  2002. It is also available on its mirror sites (e.g. in Europe: lth.se).
  2003.  
  2004. FINGER
  2005. You can also read this list by using finger to 'rgaros@bio.vu.nl'.
  2006.     Tip: 'finger rgaros@bio.vu.nl | more' or
  2007.          'finger rgaros@bio.vu.nl > gestalt-selectors.etx'
  2008. My .plan file which you see when you do this, may be more up-to-date and
  2009. may include small corrections, or contains a preliminary version of the
  2010. next version to be published.
  2011.  
  2012. **COMPUSERVE**
  2013.  
  2014. Starting with version 2.0 this list will be uploaded to the
  2015. Macintosh Developers Forum (MACDEV). Only new minor and major versions
  2016. will be uploaded once. It will then appear in the Tools/Debuggers section.
  2017.  
  2018. **GENERAL**
  2019.  
  2020. CD-ROM or BBS
  2021. Because of permissions I granted you may get this list from a CD-ROM
  2022. (BBS in a BOX, Info-Mac CD-ROM, MacWorld CD-ROM BeNeLux, Nautilus CD-ROM)
  2023. or via a BBS from Internet, CompuServe or a CD-ROM. If you do, and the
  2024. release was more than a month ago, there is probably already a new version.
  2025.  
  2026. DISTRIBUTION LIST
  2027. Every person on the distribution list gets automatically an update by email
  2028. whenever there are some changes. If you want to join this distribution list
  2029. you need to send me an email asking to be included. The same applies when
  2030. you want to be removed from the list.
  2031. If you are subscribed to this list and the email to you bounces three times
  2032. and I'am not able to find the correct address you will be removed anyhow.
  2033. This service is only possible to those who have an account on Internet or
  2034. any other network reachable from Internet (CompuServe, AOL, AppleLink).
  2035. I can not provide mailing of printed versions or on disk by normal surface
  2036. mail.
  2037.  
  2038. PRINTED
  2039. If you want this list printed on paper you may want to try a new feature
  2040. included with the new LaserWriter 8.0 software. With it you can print four
  2041. pages on a single sheet of paper. When you set the page breaks correct,
  2042. this produces a very neat, little booklet.
  2043.  
  2044. Acknowledgements
  2045. ----------------
  2046. I would like to thank the following persons for their contribution to
  2047. this list:
  2048.  
  2049. _NAME                                                 INTERNET EMAIL ADDRESS_
  2050. Anonymous contributor(s)                             <anonymous@secret.cia>
  2051. Lonnie R. Abelbeck                              <abelbeck@dev.abelbeck.com>
  2052. Ivan M Cavero Belaunde                              <ivanski@world.std.com>
  2053. Jim Browne                                          <jbrowne@ncsa.uiuc.edu>
  2054. Scott Bronson                                       <urge@mcl.mcl.ucsb.edu>
  2055. Mark Dawson                                                <marc@apple.com>
  2056. Lawrence D'Oliveiro                                     <ldo@waikato.ac.nz>
  2057. M. David Greenspon                            <gremicf@yalevm.ycc.yale.edu>
  2058. C.K. Haun                                                  <haun@apple.com>
  2059. Michael Hecht                                   <Michael_Hecht@mac.sas.com>
  2060. Robert Hess                                  <robert_hess@macweek.ziff.com>
  2061. Mark B. Johnson                                        <mjohnson@apple.com>
  2062. David B. Lamkins                                        <dblamkins@aol.com>
  2063. Roland Mansson                                   <roland.mansson@ldc.lu.se>
  2064. Matsubayashi Kohji                          <matubays@ics.es.osaka-u.ac.jp>
  2065. Duane Murphy, Novell Inc.                          <damurphy@wc.novell.com>
  2066. Mark Nagata                                   <nagata@kurims.kyoto-u.ac.jp>
  2067. Fabrizio Oddone                                       <simula3@di.unito.it>
  2068. Marco Piovanelli                              <piovanel@ghost.dsi.unimi.it>
  2069. Francois Pottier                                   <pottier@clipper.ens.fr>
  2070. Quinn                                                 <quinn@cs.uwa.edu.au>
  2071. Dave Radcliff, Apple Computer Inc. Mac DTS             <radcliff@apple.com>
  2072. Pete Resnick                                      <resnick@cogsci.uiuc.edu>
  2073. Leonard Rosenthol                                     <leonardr@netcom.com>
  2074. Jeremy Roussak                                      <jeremyr@dcs.qmw.ac.uk>
  2075. Sterling Babcock                                         <jdsb@ee.duke.edu>
  2076. Victor Tan                                     <victort@extro.ucc.su.oz.au>
  2077. John Watte                                            <d88-jwa@nada.kth.se>
  2078. Chris Wysocki                                          <wysocki@netcom.com>
  2079.  
  2080. And the Computer Department at the Biology Faculty of the Free University
  2081. in Amsterdam, The Netherlands for their help and support. Also special
  2082. thanks to Marco Piovanelli for his support and comments about preliminary
  2083. versions and updates.
  2084.  
  2085. The persons mentioned above provided information used in this list. They
  2086. did this on personal title, NOT on behalf of their employer, unless
  2087. explicitly listed otherwise.
  2088. I assume information you mail to me about Gestalt selectors may be used in
  2089. this list. Information made available to the general public (e.g. a posting
  2090. to a USENET newsgroup) is also included and the persons name added to this
  2091. chapter (and to the distribution list).
  2092. I will mail you back to thank you and include the parts from the list which
  2093. were changed, according to the information you provided, to let you check
  2094. them.
  2095.  
  2096. Definitions and Format
  2097. ======================
  2098. This chapter explains where the word 'Gestalt' comes from, a few things
  2099. are defined and it explains how each selector code entry looks like.
  2100.  
  2101. Use in Language
  2102. ---------------
  2103. Webster's Dictionary (?):
  2104.   ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
  2105.   \-<\e>n\ or gestalts (1922)
  2106.   [G, lit., shape, form]
  2107.     :a structure, configuration, or pattern of physical, biological, or
  2108.     psychological phenomena so integrated as to constitute a functional
  2109.     unit with properties not derivable by summation of its parts.
  2110.   (Anders Wallgren)
  2111. German-Dutch dictionary:
  2112.   Gestalt w [-en]
  2113.     stature, figure, form; Ritter von der Traurigen -, knight of the
  2114.     sorrowful figure.
  2115.  
  2116. Definitions
  2117. -----------
  2118. Apple System Software
  2119. These are selectors installed by System Software from Apple Computer, Inc.
  2120. Inside Macintosh (part VI) says this about them:
  2121. "Apple reserves for its own use all four-character sequences consisting
  2122. solely of lowercase letters and non alphabetic ASCII characters".
  2123.  
  2124. Apple Additional Software
  2125. These are selectors installed by additional software from
  2126. Apple Computer, Inc. The same as with the system software selectors applies.
  2127.  
  2128. Third Parties Software
  2129. These are selectors installed by software from parties other than
  2130. Apple Computer, Inc.
  2131. Inside Macintosh (part VI) says about these:
  2132. "If you have registered a creator string with Apple, you are strongly
  2133. encouraged to use that sequence as your selector code".
  2134. This type of selectors is included in this list with the motto "If you
  2135. don't know they are there, you can't do anything with them".
  2136.  
  2137. Format Selector Entry
  2138. ---------------------
  2139. Format used to display information about each selector:
  2140.  
  2141. selector code (Software name & type [since version], by company/author)
  2142.     constant name (description, documentation) OR description
  2143.  
  2144.     CONST declaration; {remark} *ref.number to source
  2145.  
  2146.     NOTE and or WARNING:
  2147.  
  2148. Where the type is one of:
  2149. app  application (APPL)
  2150. cp   control panel (cdev)
  2151. ext  extension (INIT/appe/RDEV etc.)
  2152.  
  2153. Example:
  2154.  
  2155. COLA (Sugarwater ext [1.0] by John Sculley)
  2156.      gestaltSugarwaterVersion
  2157.      Returns version of Sugarwater as a 4-byte word.
  2158.  
  2159.      gestaltSugarwaterVersion= 'COLA'; *0
  2160.  
  2161.      WARNING: This example is fictitious.
  2162.      NOTE:
  2163.      Sugarwater? See the book 'West of Eden, The End of Innocence at
  2164.      Apple' by Frank Rose.
  2165.  
  2166. Most selectors are listed as four characters, if there are only two or
  2167. three characters displayed the remainder are spaces (or it's a typo!).
  2168. Diacritical characters are shown in the most logical normal character and
  2169. at the end of the entry a note is included about which key-combination to
  2170. press with normal International system and US keyboard layout to get the
  2171. required diacritical character and also its ASCII code.
  2172. If a selector code is installed by Apple software the entry also includes
  2173. if it is an addition, a replacement or not listed in IM VI.
  2174. When 'INF' is at the end of the first line it means it is an informational
  2175. selector, all others are environmental selectors.
  2176. The source reference number may also be used in other places than indicated
  2177. above. It then applies to other parts of the entry or to the whole entry.
  2178. A single question mark indicates an uncertainty regarding that information.
  2179. Three question marks indicate complete abcense of the information.
  2180. Some constant-names may not originate from official publications.
  2181.  
  2182. Format Version Numbers
  2183. ----------------------
  2184. BCD (Binary Coded Decimal)
  2185.      $0x0402 means 4.0.2.
  2186. INTEGER
  2187.      The decimal representation of the returned value is the version.
  2188. NumVersion
  2189.      The format of the LongInt response can be coerced into type NumVersion,
  2190.      which is the same format as used for the 'vers' resource type.
  2191.  
  2192.      type
  2193.       NumVersion = packed record
  2194.        case INTEGER of
  2195.         0: (majorRev: SignedByte;  {1st part of version number in BCD}
  2196.             minorRev: 0..9;        {2nd part is 1 nibble in BCD}
  2197.             bugFixRev: 0..9;       {3rd part is 1 nibble in BCD}
  2198.             stage: SignedByte;     {stage code: dev, alpha, beta, final}
  2199.             nonRelRev: SignedByte);{revision level of non-released version}
  2200.         1: (version: LONGINT);     {to use all 4 fields at one time}
  2201.        end;
  2202.  
  2203.      stage contains one of: $10 = development
  2204.                             $20 = alpha
  2205.                             $40 = beta
  2206.                             $80 = final
  2207.  
  2208.      The 'atkv' selector returns the majorRev release as hexadecimal.
  2209.  
  2210. Legal Stuff
  2211. ===========
  2212. (c) 1992-1993, Rene G.A. Ros
  2213.  
  2214. See other sections (below) for remarks regarding liability, trademarks and
  2215. distribution.
  2216.  
  2217. Notice of Liability
  2218. -------------------
  2219. The information in this list is distributed on an "AS IS" basis, without
  2220. warranty. While every precaution has been taken in the preparation of this
  2221. list, neither the editor nor any contributor shall have any liability to
  2222. any person or entity with respect to any liability, loss, or damage caused
  2223. or alleged to be caused directly or indirectly by the information contained
  2224. in this list or by the computer software and hardware products described
  2225. herein.
  2226.  
  2227. Trademarks
  2228. ----------
  2229. Throughout this list trademarked names are used. Rather than put a
  2230. trademark symbol in every occurrence of a trademarked name, I state I am
  2231. using the names only in an editorial fashion and to the benefit of the
  2232. trademark owner with no intention of infringement of the trademark.
  2233.  
  2234. Distribution
  2235. ------------
  2236. The information in this list may be used freely. When you use the
  2237. information in this list for COMMERCIAL purposes, you may consider sending
  2238. the editor a donation. You are not allowed to distribute this list outside
  2239. any computer network (especially printed, on disk or CD-ROM) unless you
  2240. have contacted the editor and received permission to do so. This is also to
  2241. ensure you have the latest version. The updates may not be distributed,
  2242. these are ONLY for the persons on the distribution list.
  2243.  
  2244. Permission for distribution is granted to:
  2245. Arizona Macintosh Users Group        (BBS in a BOX CD-ROM)
  2246. IDG Communications Nederland         (MacWorld CD-ROM)
  2247. METATEC Corporation                  (Nautilus CD-ROM)
  2248. Pacific HiTech, Inc.                 (Info-Mac CD-ROM)
  2249.  
  2250. You are not allowed to distribute modified versions of this list,
  2251. including, but not limited to, deleting, adding or moving text or adding
  2252. non-text parts. Distribution in any electronical format except a normal
  2253. (or compressed) text file is not allowed without permission.
  2254. You are not allowed to redistribute it with any other name than
  2255. 'gestalt-selectors-XX.etx' (where XX is the version number) unless because
  2256. of technical reasons. In such case a name should be chosen which resambles
  2257. it as close as possible to avoid confusion.
  2258.  
  2259. Editor's Address
  2260. ================
  2261. Rene G.A. Ros
  2262. student Computer Science, Institute of Technology
  2263.  
  2264. Del Court van Krimpenstraat 3
  2265. 1067 SG  Amsterdam - Geuzenveld
  2266. The Netherlands, Europe
  2267. Bank      : Postbank 4578223, Amsterdam
  2268.  
  2269. Phone#    : +31 20 611 92 74 / +31 20 611 87 00
  2270. Fax#      : +31 20 611 60 06
  2271. Internet  : rgaros@bio.vu.nl   (preferred)
  2272.             rgaros@nikhefk.nikhef.nl
  2273.             rener@htsa.aha.nl
  2274. CompuServe: >INTERNET: rgaros@bio.vu.nl
  2275.             100112,1363
  2276.             Please contact me at the INTERNET address. I read my mail there
  2277.             almost every day, while I log on to CompuServe only once or
  2278.             twice a month. Perhaps in the future, when the contacts with
  2279.             CompuServe members become more frequent, this may increase.
  2280.